OnDelete в EntityTypeBuilder <T>ASP.NET Core 2 Entity Framework - PullRequest
0 голосов
/ 31 мая 2018

Я использую следующий построитель моделей для настройки моих отношений в моей базе данных.

В моем текстовом тексте у меня есть:

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

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

    base.OnModelCreating(modelBuilder);
}

, где в 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);
        }
    }
}

Теперь моя модель адреса имеет List<Contact> Contacts { get; set; }.Как я могу настроить модель.удалить каскад при удалении адреса?

Я нашел следующую ссылку:

Удалить каскад в EF Core

Что подробно описывает OnDelete метод, однако, это, кажется, не присутствует на EntityTypeBuilder<T>?

Может кто-нибудь сказать мне, что я делаю здесь неправильно, пожалуйста?

1 Ответ

0 голосов
/ 31 мая 2018

OnDelete указывает, как настроить операцию удаления при применении для удаления зависимых объектов в отношении, когда субъект удаляется или связь разрывается.

Доступно для объекта ReferenceCollectionBuilder.Читайте о здесь .

Решение

Вы должны определить отношение как

entity.HasMany(a => a.Contacts).WithOne(c => c.Address).OnDelete(DeleteBehavior.Cascade);
...