【发布时间】:2011-11-22 09:19:16
【问题描述】:
我正在开发一个使用 EF 4.1 Code First 的 ASP.NET MVC 应用程序。
我必须将默认模式名称 (dbo) 更改为另一个名称。
我试过了:
public string SchemaName;
public void MyContext()
{
SchemaName = GetSchemaName();
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Account>().ToTable("TB_ACC_HOLDERS", SchemaName);
}
但它不起作用。当我获得一个新的 Context 实例并调用我的一些表时.. 生成的查询仍然具有“dbo”模式名称。
有人有解决这个问题的想法吗?
【问题讨论】:
-
您需要对上下文中的每个实体进行配置更改 - 这不是全局设置。否则,你做对了。
-
我这样做了,但它不起作用:-(
-
你的覆盖
OnModelCreating中有base.OnModelCreating(modelBuilder);吗? -
我做得很好。我放了一个 SYSTEM 模式,它起作用了。你最初是用 dbo 生成数据库,然后再切换吗?也许它无法检测到架构更改作为删除数据库的原因。
-
经过硬调试..我发现了错误。运行 OnModelCreating 时,我的变量正在 DataContext 的构造函数中启动,到达属性为空。 :-(
标签: c# asp.net-mvc entity-framework ef-code-first