在編寫EF+Linq的過程中,可能會遇到“在 LINQ to Entities 查詢中無法構造實體或複雜類型”的問題。
解決方法:從原有類型中繼承一個子類,然後創建子類實例
下面是例子:
private static void Main(string[] args)
{
Boolean s = false;
using(Northwind dbo = new Northwind())
{
IQueryable<Customers> query;
if(s)
{
// 錯誤的寫法,會出現 “在 LINQ to Entities 查詢中無法構造實體或複雜類型”錯誤
query = from a in dbo.Customers
select new Customers()
{
ID=a.ID,
Address = a.Address
};
}
else
{
// 解決方法,從原有類型中繼承一個子類
query = from a in dbo.Customers
select new CustomerChild()
{
ID=a.ID,
Address = a.Address
};
}
var c = query.ToList();
Console.WriteLine(c.Count);
Console.Read();
}
}
private class CustomerChild : Customers { }