2012-11-15 67 views
1

我使用EF 5.0代碼首先,在.NET 4庫中。嘗試將類成員設置爲Enum類型,但它不會持久保存到數據庫,並且EF在基於代碼創建數據庫時不會發生運行時異常。枚舉類型未映射到數據庫表

當然,當我嘗試查詢針對枚舉:

var departments = db.Departments 
        .Where(dep => dep.Name == DepartmentNames.English); 

我得到一個異常說:

The specified type member 'Name' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported. 

我使用的是枚舉使用微軟的例子:http://msdn.microsoft.com/en-us/data/hh859576.aspx

Enum成員是否還不支持?當使用.NET 4環境託管時,EF 5.0與使用.NET 5環境託管時有所不同嗎?

回答

2

Enum首先引入生活在.NET Framework 4.5(System.Data.Entity.dll)中的EF 5組件。如果您使用的是EF5,但是面向.NET Framework 4,則不支持枚舉,因爲它們不受.NET Framework 4的一部分System.Data.Entity.dll支持。因此,.NET Framework 4上的EF5是在與.NET Framework 4.5上的EF5進行比較時縮小了範圍。當您定位.NET Framework 4.5時可用的其他一些功能,但在您定位.NET Framework 4時不可用的功能有空間類型,表值函數,返回多個結果集的記錄過程以及更多。另一種方法是轉向EF6(幾周前發佈的Alpha版本),該版本不依賴於System.Data.Entity.dll,因此支持EF5在.NET Framework 4.5和.NET Framework 4中提供的所有功能以及一些功能更多(例如.NET Framework 4.5上的異步)。 EF6是微軟的一個開源項目,你可以在這裏找到所有細節:http://entityframework.codeplex.com/