EF Core:如何将关系添加到shadow属性?

时间:2017-12-05 07:45:05

标签: c# entity-framework entity-framework-core

我有两个班级:

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

1 个答案:

答案 0 :(得分:6)

阴影属性表示基本属性(在您的情况下为FK),不能用于创建导航属性。

为了在没有导航属性的情况下配置关系结束,您使用相应的Has / With无参数重载。 FK是影子还是常规属性并不重要。使用HasForeignKey方法配置关联的FK时很重要,这意味着对于shadow属性,您必须使用带有string属性名称的重载而不是lambda表达式。

以下是所需的流畅配置:

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