lan*_*393 4 c# entity-framework fluent fluent-entity-framework entity-framework-core
好的,所以在实体框架 6 中,我会在一个语句中生成密钥和属性数据库:
modelBuilder.Entity<Function>()
.HasKey(x => x.Id)
.Property(x => x.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
Run Code Online (Sandbox Code Playgroud)
在实体框架核心 (7) 中,这不起作用:
modelBuilder.Entity<Function>()
.HasKey(x => x.Id)
.Property(x => x.Id)
.ValueGeneratedNever();
Run Code Online (Sandbox Code Playgroud)
错误:“‘KeyBuilder’不包含‘Property’的定义,并且没有接受‘KeyBuilder’类型的第一个参数的扩展方法‘Property’”:
这是否必须是如下两个单独的语句,或者有没有办法像在 EF6 中那样将其合并在一起?
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Function>()
.HasKey(x => x.Id);
modelBuilder.Entity<Function>()
.Property(x => x.Id)
.ValueGeneratedNever();
}
Run Code Online (Sandbox Code Playgroud)
是的,它们在 EF Core 中是分开的。
原因是因为 EF6 方法允许您指定 PK 列,仅此而已,因此正在返回EntityTypeConfiguration<TEntityType>(与从Entity<...>调用中获得的目标相同),这就是您可以继续流畅地配置实体类型的原因。
然而,EF核心方法返回一个不同类型的叫KeyBuilder,让您进一步配置PK,喜欢HasName的关系约束名,或特定的数据库属性,如ForSqlServerHasName和ForSqlServerIsClustered等。
| 归档时间: |
|
| 查看次数: |
2569 次 |
| 最近记录: |