簡體   English   中英

實體框架LINQ查詢左聯接到新對象中,而不是null

[英]Entity Framework LINQ query left join into new object instead of null

我基本上是想在LINQ查詢中執行左外部聯接,但是我想返回左聯接對象的空實例,而不是null。 我的以下解決方案導致錯誤:

實體或復雜類型'SubObject2'不能在LINQ to Entities查詢中構造。

 public MyObjectsHolder GetObjectHolder()
     {
         using (MyEntities ctx = new MyEntities()) 
         {
             var query = (from a in ctx.tableA
                          join b in ctx.tableB on b.FKID equals a.PKID into b_a
                          from b in b_a.DefaultIfEmpty()
                          select new MyObjectsHolder()
                          {
                              SubObject1 = a,
                              SubObject2 = b ?? new SubObject2()
                          });

             return query.FirstOrDefault();
         }
     }

LINQ to Entities提供程序之所以拋出該錯誤,是因為它無法正確地將該實例轉換為SQL查詢(這是LINQ to Entities所做的事情)。 由於您的方法僅返回一個對象,因此建議您執行以下操作以補償:

var query = (from a in ctx.tableA
             join b in ctx.tableB on b.FKID equals a.PKID into b_a
             from b in b_a.DefaultIfEmpty()
             select new MyObjectsHolder()
             {
                 SubObject1 = a,
                 SubObject2 = b
             });

var result = query.FirstOrDefault();

if(result != null && result.SubObject2 == null) result.SubObject2 = new SubObject2();

return result;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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