我们首先有一个基于Entity Framework数据库的Web应用程序。我们将其部署到几个环境中。并非所有数据都将其数据存储在相同的模式名称中。我可以在web.config中更改数据库名称,但模式名称似乎在EDMX中是硬编码的。
有没有办法解决这个问题?我毫无结果的谷歌搜索努力让我有点害怕,但我无法相信干净地部署的唯一方法是每次安装之前找到 - 替换所有出现的模式名称。
答案 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