簡體   English   中英

EF Core:如何將關系添加到shadow屬性?

[英]EF Core: How to add the relationship to shadow property?

我有兩節課:

public class DbLibrary
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public List<DbDepartment> Departments { get; set; } = new List<DbDepartment>();
}

public class DbDepartment
{
    public Guid Id { get; set; }
    public string Name { get; set; }
}

在這個模型中,我需要DbDepartment沒有包含DbLibrary鏈接的屬性。 但是我需要在數據庫端進行級聯刪除。 為此,我將shadow屬性添加到DbDepartment 這是外鍵。 如何將主鍵DbLibrary類與shadow屬性相關聯?

這是我的嘗試:

protected override void OnModelCreating(ModelBuilder builder)
{
    // Create the shadow property
    var id = builder.Entity<DbDepartment>().Property<Guid>("LibraryId");

    // Create the relationship for cascade delete
    builder.Entity<DbLibrary>().HasMany(n => n.Departments)
        .WithOne(m => id /* it is wrong */).OnDelete(DeleteBehavior.Cascade);
}

陰影屬性表示基本屬性(在您的情況下為FK),不能用於創建導航屬性。

為了在沒有導航屬性的情況下配置關系結束,可以使用相應的Has / With參數重載。 FK是影子還是常規屬性並不重要。 使用HasForeignKey方法配置關聯的FK時很重要,這意味着對於shadow屬性,您必須使用帶有string屬性名稱的重載而不是lambda表達式。

這是所需的流暢配置:

builder.Entity<DbLibrary>()
    .HasMany(e => e.Departments)
    .WithOne()
    .HasForeignKey("LibraryId")
    .OnDelete(DeleteBehavior.Cascade);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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