[英]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.