我使用ADO.NET C#POCO實體生成器Visual Studio加載項爲我的實體生成POCO類。Linq使用生成的POCO類在EF4中的實體
當我嘗試使用類中的LINQ to Entities查詢,如下面的一個:
var q = from w in entities.Widgets
select new Widget
{
Id = w.Id,
WidgetName = w.WidgetName,
WidgetDescription = w.WidgetDescription
};
return q.ToList();
我得到以下異常:
「的實體或複雜類型MyNamespace.Widget」不能在LINQ to Entities查詢中構造「。
解決這個問題的唯一方法是使用匿名類型,然後另一個LINQ查詢:
var q = from w in entities.Widgets
select new
{
Id = w.Id,
WidgetName = w.WidgetName,
WidgetDescription = w.WidgetDescription
};
var r = from e in q.AsEnumerable()
select new Widget
{
Id = e.Id,
WidgetName = e.WidgetName,
WidgetDescription = e.WidgetDescription
};
return r.ToList();
這工作,但相當多餘。我明白爲什麼我會得到例外,但是有沒有更優雅的方法呢?
的POCO類由ADO.NET C#中產生的事實POCO實體發生器似乎不相關的問題;我嘗試使用我自己的POCO類,並看到相同的例外。
非常感謝。
編輯: 添加鏈接演練使用ADO.NET C#POCO實體發生器的Visual Studio插件 - http://blogs.msdn.com/b/adonet/archive/2010/01/25/walkthrough-poco-template-for-the-entity-framework.aspx
RPM1984,除了已經在EDM中創建的POCO外,我還沒有創建新的POCO。 ADO。NET C#POCO實體生成器加載項將實體從ModelName.Designer.cs中取出,併爲每個實體生成一個上下文類和一個單獨的POCO。它還從這些類中刪除了EdmEntityTypeAttribute屬性,我認爲它們有效地將它們從EDM中移除。 – 2010-12-22 04:07:52