将默认使用的 SQL Server 架构从 [dbo] 更改为其他架构
本文关键字:dbo 其他 SQL Server 默认 | 更新日期: 2023-09-27 18:33:55
我正在使用EF5和DefaultMemberProvider,并希望控制SQL Server中用于DefaultMemberProvider创建的表的架构。
EF5 表示这是可行的,因为:
modelBuidler.Entity<MyEntity>().ToTable("MyTable", "MySchema");
但由于这些不是"我的"实体,我不能这样做。
问题:
1) 那么如何在 EF5 中执行此操作?2) 使用 DbModelBuilder.HasDefaultSchema 时,是否在 EF6 中处理此问题?
是的,我确实会升级到 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 将登录用户名作为架构,一切正常。当然,您也可以从配置中加载模式名称并将其插入其中。
注意:自动迁移将不再起作用,因为这似乎使系统非常混乱。请参阅此处了解可能的解决方案,以便至少显式迁移将以某种方式工作: 使用具有代码优先的 IdentityDbContext 的实体框架 自动迁移表位置和架构?