我需要在.NET 4上使用EF5,并且在使用HasDatabaseGenerationOption.Identity映射我的类时遇到了引用问题,该版本在4.0版本的库中不存在。
以下内容失败:
this.Property(t => t.DeploymentLogId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
有没有人知道一项工作?
答案 0 :(得分:23)
使用NuGet将EntityFramework添加到面向.NET 4.5的项目中,将添加EntityFramework 5.0。
如果您稍后将项目更改为目标.NET 4.0,则仍会引用EntityFramework 5.0。
要修复它,请使用NuGet卸载EntityFramework并将其添加回NuGet。这将添加EntityFramework 4.4,这是.NET 4.0的最后一个受支持的版本。
如果它仍然不起作用,可能会在App.config
中引用某些特定的EF版本。这些可以删除。
答案 1 :(得分:11)
EF 5.0中的命名空间已更改。尝试添加:
using System.ComponentModel.DataAnnotations.Schema;
答案 2 :(得分:3)
您是否尝试过使用数据注释?
public class DeploymentLog
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int DeploymentLogId { get; set; }
答案 3 :(得分:1)
System.ComponentModel.DataAnnotations.Schema
自4.5以来只是.NET Framework的一部分
如果您使用的是4.0,那么Entity Framework将为您提供。如果您查看DatabaseGeneratedOption的源代码和其他文件,您会看到他们的代码包含在条件
中#if NET40
...
#endif
答案 4 :(得分:1)
我们最近在一个旧项目中遇到了这个问题,我们所做的只是