Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ef5.0&;动态连接字符串?_C#_Sql_Entity Framework_Connection String - Fatal编程技术网

C# ef5.0&;动态连接字符串?

C# ef5.0&;动态连接字符串?,c#,sql,entity-framework,connection-string,C#,Sql,Entity Framework,Connection String,现在有件事让我抓狂 我的(数据库优先)EF模型需要一个动态连接字符串(服务器的IP地址可能会偶尔更改) 所以在较旧的EF版本中,您可以通过构造函数传递连接字符串,但这在5.0中似乎是不可能的 到目前为止,我读到的内容是,您可以更改数据模板,但每次重新生成模型时都会覆盖数据模板,所以这不是最好的方法 另一件事是SQLConnectionFactory,但它似乎根本不起作用 (Database.DefaultConnectionFactory=newsqlconnectionfactory(…)似乎

现在有件事让我抓狂

我的(数据库优先)EF模型需要一个动态连接字符串(服务器的IP地址可能会偶尔更改)

所以在较旧的EF版本中,您可以通过构造函数传递连接字符串,但这在5.0中似乎是不可能的

到目前为止,我读到的内容是,您可以更改数据模板,但每次重新生成模型时都会覆盖数据模板,所以这不是最好的方法

另一件事是SQLConnectionFactory,但它似乎根本不起作用
(Database.DefaultConnectionFactory=newsqlconnectionfactory(…)
似乎被完全忽略)


正确的方法是什么?

正如petro提到的,您可以使用所需的构造函数创建一个分部类

例如:

public partial class MyContext : DbContext
{
    public MyContext(string connectionString) : base(connectionString) {}
}

我不认为这是一个具体的EF5问题,而是设计者没有生成一个包含该问题构造函数的DbContext派生类。您应该能够修改t4模板以生成所需的构造函数。您是否尝试过此DbContextConstructor?EF5.@petro.sidlovskyy支持它-他的问题是设计器生成的上下文类不包含该构造函数,因此他无法在不修改上下文类的情况下访问它,但每次他从数据库中重新生成数据时都会被覆盖。这很奇怪。如果DbContext生成为分部类,您可以在另一个文件中使用连接字符串实现构造函数,而该文件不会被覆盖。非常感谢,这很有效,对我来说是一个完美的解决方案!:)