我有两个班级:
DbLibrary
在此模型中我需要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);
}
。这是外键。如何将主键for(var i = 0, result = trial; i < path.length; i++) {
result = result[path[i]];
}
类与shadow属性相关联?
这是我的尝试:
bash -c
答案 0 :(得分:6)
阴影属性表示基本属性(在您的情况下为FK),不能用于创建导航属性。
为了在没有导航属性的情况下配置关系结束,您使用相应的Has
/ With
无参数重载。 FK是影子还是常规属性并不重要。使用HasForeignKey
方法配置关联的FK时很重要,这意味着对于shadow属性,您必须使用带有string
属性名称的重载而不是lambda表达式。
以下是所需的流畅配置:
builder.Entity<DbLibrary>()
.HasMany(e => e.Departments)
.WithOne()
.HasForeignKey("LibraryId")
.OnDelete(DeleteBehavior.Cascade);