Мигриране към 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 няма свойство Conventions в новия клас Microsoft.Data.Entity.ModelBuilder. Какъв е правилният начин EF7 за указване на конвенции?


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


Отговори (2)


Entity Framework 7 няма никакво вградено множество, така че няма нищо за премахване там и Cascade delete все още не е внедрено 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

Преминете през всички обекти, вземете външните ключове и ги задайте на Delete Restricted:

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