动态传递实体连接字符串 - 具有多个环境的多个实体
Posted
技术标签:
【中文标题】动态传递实体连接字符串 - 具有多个环境的多个实体【英文标题】:Passing entity connection string dynamically - multiple entities with multiple environment 【发布时间】:2016-05-07 02:44:19 【问题描述】:我的项目中有多个实体。我的客户不想在 web.config 文件中保留任何连接字符串。所以他们将为章鱼中的每个实体创建环境变量,这将在我的项目中创建一个环境配置文件。所以我需要读取这个环境变量并将其传递给实体。
我不能使用参数化构造函数,因为它需要大量代码更改。 无法修改自动生成的实体上下文文件。
我已经尝试过使用部分类和参数化构造函数。
public partial class SitesEntities
public SitesEntities(string conn)
: base(GetConnectionString())
public static string GetConnectionString()
//code
这需要在初始化每个实体时更改代码。这对我们来说是一项具有挑战性的任务,因为我们在很多地方都在使用它
using (SitesEntities entities = new SitesEntities())
//code
谁能为此建议任何替代解决方案?
【问题讨论】:
这就是依赖注入很棒的原因 【参考方案1】:依赖注入可以很好地解决这个问题。但我认为你已经提到的方式也应该有效(它很难看):
public partial class SitesEntities
public SitesEntities()
: base(GetConnectionString())
public static string GetConnectionString()
return Environment.GetEnvironmentVariable("my_env_varible");
如果这对你不起作用,我误会了什么?
【讨论】:
这里的问题是创建默认构造函数。它不允许在部分类中创建一个。公共站点实体():基础(GetConnectionString()) 我猜这是因为默认构造函数已经在你的部分类的另一部分中声明了?改那里的代码就行了? 其他类是从实体自动生成的类。我不想修改那个文件。 我明白了。如果您a)不想更改默认构造函数或b)不想更改对using (SitesEntities entities = new SitesEntities())
的调用,我认为没有办法解决这个问题。
Saxx,我也认为即使使用依赖注入也是不可能的。我面临的挑战是不修改实体初始化。我应该到处改变它。谢谢以上是关于动态传递实体连接字符串 - 具有多个环境的多个实体的主要内容,如果未能解决你的问题,请参考以下文章