Переход на MVC6/EF7: PluralizingTableNameConvention

Я переношу свое приложение MVC5 на MVC6. В настоящее время я использую два соглашения

    public class RentABikeDbContext : DbContext
{
    ...

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
    }
}

Однако похоже, что в MVC6/EF7 в новом классе Microsoft.Data.Entity.ModelBuilder нет свойства Conventions. Каков правильный способ EF7 для указания соглашений?


person Sergey Kandaurov    schedule 02.08.2015    source источник


Ответы (2)


Entity Framework 7 не имеет встроенного множественного числа, поэтому удалять там нечего, а каскадное удаление пока не реализовано https://github.com/aspnet/EntityFramework/issues/333

person ErikEJ    schedule 02.08.2015
comment
Спасибо! Это решает мою насущную проблему, но все еще не отвечает на вопрос, как отключить каскадное удаление при их реализации. - person Sergey Kandaurov; 02.08.2015
comment
Трудно отвечать на вопросы о функциях, которые не были реализованы - person ErikEJ; 02.08.2015

Переберите все сущности, получите внешние ключи и установите для них значение Удалить ограничено:

foreach (var relationship in builder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys()))
{
    relationship.DeleteBehavior = DeleteBehavior.Restrict;
}
person James Joyce    schedule 16.02.2017