C# 未找到HasDatabaseGeneratedOption方法

C# 未找到HasDatabaseGeneratedOption方法,c#,asp.net,entity-framework,asp.net-mvc-4,C#,Asp.net,Entity Framework,Asp.net Mvc 4,我已经阅读了所有与此相关的帖子,我都试过了,但没有结果 我使用fluentapi将我的模型映射到数据库。但当im查询时,我得到以下错误: Method not found: 'System.Data.Entity.ModelConfiguration.Configuration.DecimalPropertyConfiguration System.Data.Entity.ModelConfiguration.Configuration.DecimalPropertyConfigurati

我已经阅读了所有与此相关的帖子,我都试过了,但没有结果

我使用fluentapi将我的模型映射到数据库。但当im查询时,我得到以下错误:

Method not found:

 'System.Data.Entity.ModelConfiguration.Configuration.DecimalPropertyConfiguration

System.Data.Entity.ModelConfiguration.Configuration.DecimalPropertyConfiguration.HasDatabaseGeneratedOption(System.Nullable`1<System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption>)'.
由于某种原因,
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
给了我这个错误,所以当我退出时:

HasKey(x => x.CounterId)
    .Property(x => x.PageId)
    .HasColumnName("dbCounter_Id")
    .HasPrecision(10, 0)
    .IsRequired();
我得到的不是错误,而是我非常幸运当我试图向表中添加记录时,我得到了。我既不能添加也不能退出
HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
方法

重要提示:键
计数器ID
不是整数类型,而是十进制(10,0)。这就是问题所在吗?我无法更改该列的数据类型,因为生产中有很多应用程序将受到最坏的影响


希望我能得到任何帮助。

您应该尝试从所有项目中删除nuget包。然后再加一次


我不知道为什么,但它对我很有效,即使包装是一样的。

你应该这样做

ToTable("table_name");
    HasKey(x => x.CounterId); // you should split HasKey from Property
    Property(x => x.CounterId)
        .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
        .HasColumnName("dbCounter_Id")
        .HasPrecision(10, 0)
        .IsRequired();

    Property(x => x.HouseId)
        .HasColumnName("dbHouseId");

    Property(x => x.ApplicationId)
        .HasColumnName("dbApplication_id");

出现此错误的原因之一是项目的.NET版本不同。例如,如果您的EF DbContext类是在.NET v4.5的项目中创建的,并且您在其中使用的Web应用程序是.NET v4.0的,则您可能在运行时遇到此错误

理想情况下,它应该在编译时出错。但是,有时VisualStudio编译得很好,特别是对于较旧的“网站”类型的项目。而且,当应用程序实际运行时,也就是发生错误时


因此,要解决此问题,请确保客户端应用程序的.NET framework版本(使用EF DbContext类)大于等于包含DbContext的project的.NET版本。

我在EF6和ASP.NET 3.1中遇到了类似的问题。这个答案帮助我朝着正确的方向前进,但我的解决方式略有不同。我所需要做的就是在我的模型类中添加以下内容,该表基于这些内容:

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Round { get; set; }

我试过了,它对我有用。您什么时候出现您提到的错误?启用HasDatabaseGeneratedOption方法时,每当我尝试查询时,我都找不到方法;如果没有HasDatabaseGeneratedOption方法,每当我尝试插入时,我都会得到插入标识例外。您的代码对我来说非常适合。为我修复了它。:)我讨厌这样的修正,但有时这是完成工作的必要条件。
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Round { get; set; }