簡體   English   中英

使用用戶定義的類型時,實體框架急切加載導航屬性會導致錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM