2012-09-11 140 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

非常感謝你,這是有效的,對我來說是一個完美的解決方案! :) –