[英]Include() in LINQ to Entities query
我的ASP.NET MVC 3項目中有以下模型:
public class Task
{
public int Id { get; set; }
public DateTime CreatedOn { get; set; }
public TaskStatus Status { get; set; }
}
public class TaskStatus
{
public int Id { get; set; }
public string Description { get; set; }
}
作為參考,這是我的DbContext類:
public class TaskManagerSets : DbContext
{
public DbSet<Task> TaskSet { get; set; }
public DbSet<TaskStatus> TaskStatusSet { get; set; }
}
然后我在TaskController中有一個List Action:
TaskManagerSets dbcontext = new TaskManagerSets();
public ActionResult List()
{
var tasks = from tsk in dbcontext.TaskSet.Include("TaskStatusSet")
select tsk;
return View(tasks.ToList());
}
最后我有任務列表視圖:
@model IEnumerable<TaskManager.Models.Task>
<ul>
@foreach (var tsk in Model)
{
<li>@tsk.Id | @tsk.CreatedOn | @tsk.Status.Description</li>
}
</ul>
當我執行我的項目時,我收到以下錯誤:
指定的包含路徑無效。 EntityType'CodeFirstNamespace.Task'不聲明名為'TaskStatus'的導航屬性。
問題肯定在Include("TaskStatusSet")
但我該如何解決這個問題呢?
Task
類中的導航屬性名稱是Status
。 所以,你必須使用:
var tasks = from tsk in dbcontext.TaskSet.Include("Status")
select tsk;
但是,由於您正在使用DbContext
API,更好的選擇是使用Include的類型安全重載:
using System.Data.Entity;
// You must add a using statement for this namespace to have the following
// lambda version of Include available
//...
var tasks = from tsk in dbcontext.TaskSet.Include(t => t.Status)
select tsk;
您將獲得Intellisense和編譯時檢查,這有助於避免出現像您一樣的錯誤字符串問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.