我试图将EF 6模型迁移到EF 7,但我坚持一点。我试过几个人的建议无济于事。
这是在EF 6中表达的属性:
modelBuilder.Entity<StockItem>()
.HasOptional(e => e.StockItemHolding)
.WithRequired(e => e.StockItem);
使用这样的代码,我收到以下错误:
错误CS1061&#39; EntityTypeBuilder&#39;不包含 &#39; HasOptional&#39;的定义没有扩展方法&#39; HasOptional&#39; 接受类型&#39; EntityTypeBuilder&#39;的第一个参数。 可以找到(你错过了使用指令或程序集 引用?)
我已检查过文档,WithRequired
是问题所在。它已被WithOne
取代。多对多关系很好地工作,就像这样:
modelBuilder.Entity<StockItem>()
.HasMany(e => e.StockItemTransactions)
.WithOne(e => e.StockItem).IsRequired()
.OnDelete(DeleteBehavior.Restrict);
答案 0 :(得分:0)
在EF Core Fluent API中Required
/ Optional
(以及Dependent
/ Principal
)不再是Has
/ {{1}的一部分}} 方法。它们已被With
/ HasOne
替换为WithOne
。
但是,有关EF Core中IsRequired
关系的其他一些重要细节。
首先,one-to-one
仅适用于依赖实体,即从主体方面,关系始终是可选的。
其次,您需要指定依赖外键,可以是PK或单独字段(显式或阴影)。
因此,上述EF6配置(创建Shared Primary Key Association)的等效EF Core配置将如下(假设IsRequired
PK被称为StockItemHolding
):
Id