我在 .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 成员吗? EF 5.0 由 .NET 4 环境托管时与由 .NET 5 环境托管时是否有所不同?
最佳答案
枚举首次在 .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/
关于.net-4.0 - 枚举类型未映射到数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13407957/