.NET 4.0上的实体框架5 - DatabaseGeneratedOption.Identity未定义

时间:2012-08-29 18:06:55

标签: entity-framework .net-4.0 entity-framework-5

我需要在.NET 4上使用EF5,并且在使用HasDatabaseGenerationOption.Identity映射我的类时遇到了引用问题,该版本在4.0版本的库中不存在。

以下内容失败:

this.Property(t => t.DeploymentLogId)
              .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

有没有人知道一项工作?

5 个答案:

答案 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)

我们最近在一个旧项目中遇到了这个问题,我们所做的只是

  • 删除项目中的EntityFramework引用
  • 右键单击项目,执行Manage NuGet包,转到Updates类别,然后单击列表中的实体框架项目上的更新到版本6