gpt4 book ai didi

c# - Entity Framework Core Fluent Modelbuilder 键和属性

转载 作者:太空狗 更新时间:2023-10-30 01:14:46 28 4
gpt4 key购买 nike

好的,所以在 Entity Framework 6 中,我会在一条语句中生成 key 和属性数据库:

modelBuilder.Entity<Function>()
.HasKey(x => x.Id)
.Property(x => x.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

在 Entity Framework 核心 (7) 中,这不起作用:

modelBuilder.Entity<Function>()
.HasKey(x => x.Id)
.Property(x => x.Id)
.ValueGeneratedNever();

错误:“‘KeyBuilder’不包含‘Property’的定义,并且没有扩展方法‘Property’接受‘KeyBuilder’类型的第一个参数”:

这是否必须是如下所示的两个单独的语句,或者是否有办法像在 EF6 中那样将它合二为一?

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Function>()
.HasKey(x => x.Id);

modelBuilder.Entity<Function>()
.Property(x => x.Id)
.ValueGeneratedNever();
}

最佳答案

是的,它们在 EF Core 中是分开的。

原因是因为 EF6 方法允许您指定 PK 列,仅此而已,因此返回 EntityTypeConfiguration<TEntityType> (与从 Entity<...> 调用中获得的目标相同)这就是您可以继续流畅地配置实体类型的原因。

但是 EF Core 方法返回一个名为 KeyBuilder 的不同类型这允许您进一步配置 PK,例如 HasName对于关系约束名称,或特定的数据库属性,如 ForSqlServerHasNameForSqlServerIsClustered等等

关于c# - Entity Framework Core Fluent Modelbuilder 键和属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41898349/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com