EntityTypeBuilder<T> ASP.NET Core 2 实体框架中的 OnDelete

Mat*_*ynn 4 c# entity-framework-core asp.net-core-2.0

我使用以下模型构建器在我的数据库上设置我的关系。

在我的数据上下文中,我有;

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.HasDefaultSchema(schema: DbGlobals.SchemaName);

    modelBuilder.AddConfiguration<Address>(new AddressConfiguration());
    /*reduced for brevity*/

    base.OnModelCreating(modelBuilder);
}
Run Code Online (Sandbox Code Playgroud)

其中AddressConfiguration()我有以下内容;

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;

namespace Data.EF.Configuration
{
    internal class AddressConfiguration : DbEntityConfiguration<Address>
    {
        public override void Configure(EntityTypeBuilder<Address> entity)
        {
            entity.HasKey(x => x.Id);
            entity.Property(x => x.Latitude).HasColumnType($"decimal(9,6)").IsRequired();
            entity.Property(x => x.Longitude).HasColumnType($"decimal(9,6)").IsRequired();
            //I have tried the following but it says doesnt exist
            //entity.OnDelete(DeleteBehavior.Cascade);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我的地址模型有一个List<Contact> Contacts { get; set; }. 如何配置模型。当地址被删除时删除级联?

我找到了以下链接;

在 EF Core 中删除级联

哪个详细说明了一种OnDelete方法,但是这似乎不存在于EntityTypeBuilder<T>

谁能告诉我我在这里做错了什么?

use*_*994 5

OnDelete 指定如何配置删除操作应用于删除主体或关系断开时删除关系中的依赖实体。

它是可用的ReferenceCollectionBuilder| ReferenceReferenceBuilder对象。在这里阅读。

解决方案

您应该将关系定义为

    entity
        .HasMany(a => a.Contacts)
        .WithOne(c => c.Address)
        .OnDelete(DeleteBehavior.Cascade);
Run Code Online (Sandbox Code Playgroud)