在web.config而不是edmx中定义数据库模式

时间:2014-08-05 08:53:13

标签: entity-framework web-config database-schema edmx

我们首先有一个基于Entity Framework数据库的Web应用程序。我们将其部署到几个环境中。并非所有数据都将其数据存储在相同的模式名称中。我可以在web.config中更改数据库名称,但模式名称似乎在EDMX中是硬编码的。

有没有办法解决这个问题?我毫无结果的谷歌搜索努力让我有点害怕,但我无法相信干净地部署的唯一方法是每次安装之前找到 - 替换所有出现的模式名称。

1 个答案:

答案 0 :(得分:0)

您可以这样做: 在web.config中:

<add key="DbSchema" value="dbo" />

然后在EntitiesDb类上(假设您使用此名称):

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        string schema = WebConfigurationManager.AppSettings["DbSchema"]; //ServiceSettingsDictionary.GetSchemaName();
        if (!string.IsNullOrEmpty(schema))
        {
            modelBuilder.HasDefaultSchema(schema);
            //modelBuilder.Entity<ConnectionItem>().ToTable("ConnectionItems", schema);
        }
        base.OnModelCreating(modelBuilder);
    }e