[英]Convert WithOptional to Entity Framework Core(7) equivalent
我正在使用 Visual Studio 2022 將項目從 .Net 4.X 遷移到 .Net 6 和 EF 6 到最新版本(我相信是版本 7)。
我已經遷移了一堆配置,但下面我不確定繼續的最佳方式(數據庫已經存在)
這是 EF6 代碼
internal class CustomerConfiguration : EntityTypeConfiguration<Customer>
{
public CustomerConfiguration()
{
this.HasMany(e => e.CustomerDocuments)
.WithOptional(e => e.Customer)
.HasForeignKey(e => e.CustomerID);
}
}
在 EF 7 中,我的代碼為
internal class CustomerConfiguration : IEntityTypeConfiguration<Customer>
{
public void Configure(EntityTypeBuilder<Customer> builder)
{
builder.HasMany(e => e.CustomerDocuments)
}
}
但我找不到.WithOptional
和https://learn.microsoft.com/en-us/ef/core/modeling/relationships?tabs=fluent-api%2Cfluent-api-simple-key%2Csimple-key 的等價物確實向我展示了如何配置它的任何示例,盡管.HasForeignKey
似乎存在,但我認為一旦WithOptional
得到解決,它可能會提供一些轉換/使用HasForeignKey
的方法。
我閱讀了帶有 Entity Framework Core 的 WithOptional,但后來我對它的替代品是否為HasOne
感到困惑,因為我已經在使用WithOne
(在另一個實體配置中)來轉換WithRequired
(來自 EF 6)
任何人都知道我在這里缺少什么或如何轉換為 EF 7 中的等效項?
在 EF Core 中,它們簡單地分為WithOne
(用於關系基數和關聯的引用導航屬性映射)和IsRequired
(無論它是必需的還是可選的)。
所以在HasMany
/ WithRequired
之后WithOptional
/ HasOne
到 EF Core 的一般轉換就像
.WithOptional(e => e.Customer)
映射到
.WithOne(e => e.Customer)
.IsRequired(false)
和
.WithRequired(e => e.Customer)
映射到
.WithOne(e => e.Customer)
.IsRequired(true) // or just .IsRequired()
如果您從“一”端開始配置,這同樣適用,即HasOptional
/ HasRequired
變為HasOne().With{One|Many}).IsRequired(false|true)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.