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