.net-4.0 - 枚举类型未映射到数据库表

标签 .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 成员吗? 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/

相关文章:

c# - C# 默认位置中的配置文件?

c# - 使用 .NET 4 让程序最小化到系统托盘的最简单方法

asp.net - 如何使用 RenderingMode=List 控制应用于 ASP.NET 4 菜单的 CSS 类

entity-framework - 没有发生并发检查

asp.net-mvc-4 - 如何使用ELMAH MVC记录EntityValidation错误?

c# - Entity Framework AsNoTracking 中断对 Distinct 的调用

entity-framework - EF5 视觉设计更新但模型不是

.net-4.0 - 是否有 Microsoft.VisualBasic.FileIO.TextFieldParser 的写对应项?

.net - 如何使用 Unity DI 加载具有依赖项的程序集,然后注册内部组件

c# - 如何在 C# 中关闭文件上的现有句柄