EF 5.0和动态连接字符串?

8

眼下有一件事让我感到困扰。

我的(基于数据库的)EF模型需要一个动态的连接字符串(服务器IP地址可能会不时变化)。

因此,在旧版EF中,您可以通过构造函数传递连接字符串,但是在5.0中似乎不可能。

据我所读,您可以更改数据模板,但每次重新生成模型等都会被覆盖,所以这并不是最好的方法。

另一种方法是SQLConnectionFactory,但这似乎根本行不通 (Database.DefaultConnectionFactory = new SqlConnectionFactory(...) 似乎完全被忽略)。

那么正确的方法是什么呢?


我不认为这是一个特定的EF5问题,而是设计师没有生成一个包含此构造函数的DbContext派生类。您应该能够修改t4模板以生成所需的构造函数。 - Erik Funkenbusch
你尝试过这个DbContextConstructor吗?http://msdn.microsoft.com/en-us/library/gg679467%28v=vs.103%29.aspx 它在EF5中得到支持。 - petro.sidlovskyy
@petro.sidlovskyy - 他的问题是设计师生成的上下文类不包含该构造函数,因此他无法访问它,除非修改上下文类,但这样做会在每次从数据库重新生成数据时被覆盖。 - Erik Funkenbusch
1
很奇怪。如果DbContext被生成为部分类,您可以在另一个文件中实现带有连接字符串的构造函数,这样它就不会被覆盖。 - petro.sidlovskyy
1个回答

18

正如 petro 提到的那样,你可以创建一个带有所需构造函数的部分类。

例如:

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

非常感谢,这个方案对我来说完美解决了! :) - Mr. Muh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接