2012-11-15 129 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/