2012-09-11 97 views
8

现在有一件事让我发疯。我的(数据库优先)EF模型需要一个动态连接字符串(服务器的IP地址可能会在一段时间内改变一次)。EF 5.0和动态连接字符串?

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

到目前为止,我已经阅读过,您可以更改您的数据模板,但每次重新生成模型时都会被覆盖,因此不是最好的方法。

另一件事是SQLConnectionFactory,但似乎并没有工作 (Database.DefaultConnectionFactory = new SqlConnectionFactory(...)似乎完全忽略)。

什么是正确的方法呢?

+0

我不相信这是专门的EF5的问题,而是设计器不产生的DbContext派生类包括一个构造。你应该可以修改t4模板来生成你想要的构造函数。 –

+0

你有没有试过这个DbContextConstructor http://msdn.microsoft.com/en-us/library/gg679467%28v=vs.103%29.aspx?它在EF5中得到了支持。 –

+0

@ petro.sidlovskyy - 他的问题是设计器生成的上下文类不包含该构造函数,所以如果不修改上下文类,就无法访​​问它,但每次从db重新生成数据时都会被覆盖。 –

回答

18

正如petro提到的,你可以用你想要的构造函数创建一个部分类。

例如:

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

非常感谢你,这是有效的,对我来说是一个完美的解决方案! :) –