簡體   English   中英

將 WithOptional 轉換為等效的 Entity Framework Core(7)

[英]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)
    }
}

但我找不到.WithOptionalhttps://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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM