[英]Entity Framework eager loading navigation property causes error when using user-defined type
一些背景
我想將一個對象列表(我的模型視圖)綁定到一個網格。 模型視圖包含特定實體和來自已連接實體的字段的字段。
由於dbContext超出范圍,我嘗試綁定時收到錯誤。 我意識到我需要使用.Include()方法來急切加載我的導航屬性。 但是,我懷疑,因為我正在使用Linq to Entities,我現在正在生成另一個錯誤:
“無法將類型'System.Linq.IQueryable 1' to type 'System.Data.Objects.ObjectQuery
強制轉換1' to type 'System.Data.Objects.ObjectQuery
1'.LINQ to Entities僅支持轉換EDM原語或枚舉類型。”
我的代碼如下所示,我在這里需要做什么的想法?
提前致謝!
public static List<PlanViewModel> GetPlans()
{
using (var context = new RepEntities())
{
var query = (from p in context.Plans
join r in context.RealEstateDetails on p.ReId equals r.ReId
select new PlanViewModel
{
PlanName = p.PlanName,
TargetCompletionDate = p.TargetCompletionDate,
ActualCompletionDate = p.ActualCompletionDate,
Provision = p.Provision,
StatusTypeId = p.StatusTypeId,
StatusCommon = p.StatusCommon,
Building = r.BuildingName,
City = r.City,
Country = r.Country
}).Include("StatusCommon");
return query.ToList();
}
}
你幾乎就在那里,只是在Include("StatusCommon")
之后放入Include("StatusCommon")
. context.Plans
。 因為您需要在迭代之前包含StatusCommon,所以這樣您就可以為每次迭代設置StatusCommon值。
public static List<PlanViewModel> GetPlans()
{
using (var context = new RepEntities())
{
var query = (from p in context.Plans.Include("StatusCommon")
join r in context.RealEstateDetails on p.ReId equals r.ReId
select new PlanViewModel
{
PlanName = p.PlanName,
TargetCompletionDate = p.TargetCompletionDate,
ActualCompletionDate = p.ActualCompletionDate,
Provision = p.Provision,
StatusTypeId = p.StatusTypeId,
StatusCommon = p.StatusCommon,
Building = r.BuildingName,
City = r.City,
Country = r.Country
}).toList();
return query;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.