【问题标题】:Migrating to MVC6 / EF7: PluralizingTableNameConvention迁移到 MVC6/EF7:PluralizingTableNameConvention
【发布时间】:2015-08-02 13:49:06
【问题描述】:

我正在将我的 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 方法是什么?

【问题讨论】:

    标签: asp.net-core-mvc entity-framework-core


    【解决方案1】:

    Entity Framework 7 没有任何内置的复数形式,所以没有什么可以删除的,并且尚未实现级联删除https://github.com/aspnet/EntityFramework/issues/333

    【讨论】:

    • 谢谢!这解决了我的直接问题,但仍然没有回答如何在实施时禁用级联删除的问题。
    • 难以回答有关尚未实现的功能的问题
    【解决方案2】:

    遍历所有实体,获取外键,并将它们设置为 Delete Restricted:

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

    【讨论】:

      猜你喜欢
      • 2015-04-08
      • 2017-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-11
      • 1970-01-01
      • 2016-06-07
      • 1970-01-01
      相关资源
      最近更新 更多