14

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

以下是失败的:

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

有谁知道解决方法?

4

5 回答 5

24

使用 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. 这些可以删除。

于 2012-09-26T10:24:32.807 回答
11

命名空间在 EF 5.0 中发生了变化。尝试添加这个:

using System.ComponentModel.DataAnnotations.Schema;
于 2012-08-29T18:25:54.270 回答
3

您是否尝试过使用数据注释?

public class DeploymentLog
{
   [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int DeploymentLogId { get; set; }
于 2012-08-29T18:15:07.443 回答
1

System.ComponentModel.DataAnnotations.Schema自 4.5 以来仅是 .NET Framework 的一部分

如果您使用的是 4.0,那么 Entity Framework 将为您提供它。如果您查看DatabaseGeneratedOption和其他文件的源代码,您会看到它们的代码被包装在一个条件

#if NET40
...
#endif
于 2013-02-14T10:35:59.410 回答
1

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

  • 删除项目中的EntityFramework引用
  • 右键单击项目,执行管理 NuGet 包,转到更新类别,然后单击列表中的实体框架项目上的更新到版本 6
于 2015-06-29T10:03:41.853 回答