0

我将 EF5 与 DefaultMembershipProvider 一起使用,并希望控制 SQL Server 中用于 DefaultMembershipProvider 创建的表的架构。

EF5 说这是可行的:

modelBuidler.Entity<MyEntity>().ToTable("MyTable", "MySchema");

但由于这些不是“我的”实体,我不能这样做。

问题:

1) 那么我该如何在 EF5 中执行此操作?2) 使用 DbModelBuilder.HasDefaultSchema 时是否在 EF6 中处理?

4

1 回答 1

1

是的,确实我会升级到 EF6,然后让你的上下文看起来像这样,例如:

public partial class BlogContext : DbContext
{
    public BlogContext()
        : base("BlogDb")
    {
        Database.SetInitializer<BlogContext>(null);
    }

    public DbSet<BlogPost> BlogPosts { get; set; }
    public DbSet<Category> Categories { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingEntitySetNameConvention>();
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        modelBuilder.HasDefaultSchema("");
    }
}

您会看到在末尾将默认模式设置为“”,这也可以,在我的情况下,Oracle 12c 将登录用户名作为模式并且一切正常。当然,您也可以从配置中加载模式名称并将其插入其中。

注意:自动迁移将不再起作用,因为这似乎使系统非常混乱。请参阅此处以获取可能的解决方案,以便至少显式迁移将以某种方式起作用:Entity Framework using IdentityDbContext with Code First Automatic Migrations table location and schema?

于 2015-08-27T09:34:21.023 回答