我已经阅读了所有与此相关的帖子,我已经尝试了所有但没有结果。
我使用 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>)'.
我的模型看起来像这样:
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");
出于某种原因,
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
给了我这个错误,所以当我退出时:HasKey(x => x.CounterId)
.Property(x => x.PageId)
.HasColumnName("dbCounter_Id")
.HasPrecision(10, 0)
.IsRequired();
我得到的不是错误,而是 就像 hell 一样幸运 ,当我尝试向该表 添加记录时 我得到 insert identity exception 。我既不能添加也不能退出
HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
方法。重要提示:关键
CounterId
不是 INTEGER 类型,而是 DECIMAL(10,0) 类型。这可能是这里的问题吗?我无法更改列的数据类型,因为生产中有很多应用程序会以最坏的方式受到影响。希望我能得到任何帮助。
最佳答案
你应该这样做
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");
关于c# - 未找到方法 HasDatabaseGeneratedOption,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23571283/