2010-06-11 17 views
0

在ADO.Net EF 4 CTP 3中查看Code First,並想知道如何處理their walkthrough中的SqlConnection。這是ContextBuilder的責任嗎?這個例子中是否缺失?EF 4 Code First的ContextBuilder是否處理其SqlConnection?

var connection = new SqlConnection(DB_CONN); 
    var builder = new ContextBuilder<BloggingModel>(); 
    var connection = new SqlConnection(DB_CONN); 

    using (var ctx = builder.Create(connection)) 
    { 
     //... 
    } 
+0

此代碼並不完全是鏈接上的內容,但我認爲這是剪切和粘貼錯誤。 – 2010-06-11 02:50:05

+0

@Craig:爲簡明起見而縮寫...... :-) – 2010-06-11 03:55:08

回答

1

我剛剛意識到我可以添加一個事件處理程序到ObjectContext.Disposing並解決此問題。

至少在CTP 3中,連接是而不是在處理ObjectContext時處置。

因爲我已經繼承了ObjectContext的子類,所以我在子類中實現了IDisposable,並從那裏調用Connection.Dispose()。

0

Close and Dispose in SqlConnection are functionally equivalent。因此,只要連接關閉 - 我想你會發現它是,但不要聽我的話 - 示例代碼起作用。

但是既然你問了,你應該可以處置它。它不會造成傷害,並會阻止其他人提出同樣的問題。

+0

我知道配置連接也會關閉它,但示例代碼會配置ctx,而不是連接。對於我來說,ContextBuilder的合約是否確保它將處置(並因此關閉)它所提供的連接是未知的。 – 2010-06-11 03:54:53

+0

讓我改述一下:因爲ContextBuilder關閉了連接,連接不需要處理。 – 2010-06-11 13:36:39

+0

ContextBuilder在我的測試中沒有關閉連接(請參閱我的單獨答案)。 – 2010-06-11 20:58:22