【问题标题】:Define database schema in web.config instead of edmx在 web.config 而不是 edmx 中定义数据库模式
【发布时间】:2014-08-05 08:53:13
【问题描述】:
我们有一个基于实体框架数据库的网络应用程序。我们将其部署到几个环境中。并非所有人都将数据存储到相同的模式名称中。我可以在 web.config 中更改数据库名称,但架构名称似乎是硬编码在 EDMX 中的。
有没有办法解决这个问题?毫无结果的谷歌搜索让我有点害怕,但我无法相信干净部署的唯一方法是在每次安装之前查找并替换所有出现的模式名称。
【问题讨论】:
标签:
entity-framework
web-config
database-schema
edmx
【解决方案1】:
你可以这样做:
在 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