C# 如何更改架构名称

C# 如何更改架构名称,c#,asp.net-mvc,entity-framework,ef-code-first,C#,Asp.net Mvc,Entity Framework,Ef Code First,我正在开发一个ASP.NETMVC应用程序,首先使用EF4.1代码 我必须将默认模式名(dbo)更改为另一个名称 我试过这个: public string SchemaName; public void MyContext() { SchemaName = GetSchemaName(); } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity&l

我正在开发一个ASP.NETMVC应用程序,首先使用EF4.1代码

我必须将默认模式名(dbo)更改为另一个名称

我试过这个:

public string SchemaName;

public void MyContext()
{
    SchemaName = GetSchemaName();
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Account>().ToTable("TB_ACC_HOLDERS", SchemaName);
}
公共字符串模式名;
public void MyContext()
{
SchemaName=GetSchemaName();
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().ToTable(“TB_ACC_HOLDERS”,SchemaName);
}
但它不起作用。当我获得上下文的新实例并调用一些表时。。生成的查询仍然使用“dbo”架构名称


有人有办法解决这个问题吗?

在调试模式下运行几个小时后,我发现了错误

在构造函数中,我获取connectionString上的模式名称,并将属性(schemaName)设置为该值

但是,当执行得到OnModelCreating()方法时,我的schemaName属性被设置为NULL,谁知道为什么

然后我将schemaName变量固定在方法的代码上。当我这么做的时候,一切都是对的

谢谢大家

在此,代码:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    //It works fine
    var schemaName = "SYSTEM";
    modelBuilder.Entity<Account>().ToTable("TB_ACC_HOLDERS", schemaName);
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
//它很好用
var schemaName=“系统”;
modelBuilder.Entity().ToTable(“TB_ACC_HOLDERS”,schemaName);
}

您需要对上下文中的每个实体进行配置更改-这不是全局设置。否则,您就做对了。我这样做了,但它不起作用:-(您有
base.OnModelCreating(modelBuilder)吗
在您重写的
OnModelCreating中
?我可以做得很好。我打开了一个系统架构,它工作了。您最初是用dbo生成数据库并在之后切换它吗?可能它无法检测到架构更改是删除数据库的原因。经过一次艰难的调试..我发现了错误。我的变量正在启动在DataContext的构造函数中,当运行OnModelCreating时,到达的属性为null:(我正在使用此代码连接到Oracle数据库,而不使用DevArt连接器。这很难,但并非不可能!我稍后将发布所有代码!)