1

我在 .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

尚不支持枚举成员吗?EF 5.0 在由 .NET 4 环境托管时是否与由 .NET 5 环境托管时有所不同?

4

1 回答 1

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 时不可用的其他一些功能包括空间类型、表值函数、返回多个结果集的存储过程等等。另一种方法是迁移到不依赖 System.Data.Entity.dll 的 EF6(几周前发布的 Alpha 版本),因此支持 .NET Framework 4.5 和 .NET Framework 4 上的 EF5 中提供的所有功能以及一些更多(例如 .NET Framework 4.5 上的异步)。EF6 是 Microsoft 的一个开源项目,您可以在此处找到所有详细信息:http://entityframework.codeplex.com/

于 2012-11-18T19:08:07.063 回答