枚举类型未映射到DB表

时间:2012-11-15 23:18:32

标签: .net-4.0 entity-framework-5

我在.NET 4库中使用EF 5.0 Code First。尝试将类成员设置为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.

我正在使用Microsoft的枚举使用示例:http://msdn.microsoft.com/en-us/data/hh859576.aspx

Enum会员还不受支持吗?当由.NET 4 environemt托管时,EF 5.0是否会以某种方式与.NET 5托管时不同?

1 个答案:

答案 0 :(得分:2)

首次在.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,因此支持.NET Framework 4.5和.NET Framework 4上的EF5中提供的所有功能以及一些功能。更多(例如.NET Framework 4.5上的异步)。 EF6是Microsoft的一个开源项目,您可以在此处找到所有详细信息:http://entityframework.codeplex.com/