未找到方法 HasDatabaseGenelatedOption

Ein*_*ana 3 c# asp.net entity-framework asp.net-mvc-4

我已阅读与此相关的所有帖子,并且已尝试所有内容,但没有结果。

我使用 Fluent api 将我的模型映射到数据库。但是当我查询时我收到此错误:

Method not found:

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

System.Data.Entity.ModelConfiguration.Configuration.DecimalPropertyConfiguration.HasDatabaseGeneratedOption(System.Nullable`1<System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption>)'.
Run Code Online (Sandbox Code Playgroud)

我的模型看起来像这样:

ToTable("table_name");
    HasKey(x => x.CounterId)//this property IS NOT NULLABLE
        .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");
Run Code Online (Sandbox Code Playgroud)

由于某种原因.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)给了我这个错误,所以当我退出它时:

HasKey(x => x.CounterId)
    .Property(x => x.PageId)
    .HasColumnName("dbCounter_Id")
    .HasPrecision(10, 0)
    .IsRequired();
Run Code Online (Sandbox Code Playgroud)

我没有收到错误,但我很幸运当我尝试向该表添加记录时,我收到插入身份异常。我既不能添加也不能退出该HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)方法。

重要提示:键CounterId不是 INTEGER 类型,而是 DECIMAL(10,0)。这可能是这里的问题吗?我无法更改列的数据类型,因为生产中的许多应用程序都会受到最坏的影响。

希望我能得到任何帮助。

Mon*_*nah 5

你应该这样做

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");
Run Code Online (Sandbox Code Playgroud)