2013-01-17 50 views
0

我正在使用Entity Framework 4.x.當使用Context的單個實例在單個業務操作中反覆查詢數據庫時,我知道Entity Framework將打開並關閉每個查詢的數據庫連接。但我的問題是,所有三個查詢(同樣是Context的實例)的連接是否與數據庫具有相同的連接?或者它會從連接池中獲取另一個連接(可能是中毒的連接)?當實體框架重複打開/關閉連接時,它是否是相同的實際連接?

實施例1:

var conn = (SqlConnection) ((EntityConnection) Context.Connection).StoreConnection; 
conn.Open(); 
var A = new SqlCommand("exec SProcA", conn).ExecuteNonQuery(); 
conn.Close(); 
Thread.Sleep(100); 
conn.Open(); 
var B = new SqlCommand("exec SProcB", conn).ExecuteNonQuery(); 
conn.Close(); 
Thread.Sleep(100); 
conn.Open(); 
var C = new SqlCommand("exec SProcC", conn).ExecuteNonQuery(); 
conn.Close(); 

實施例2:

// Let Entity Framework manage my connections for me automagically. 
var A = Context.TableA.First(); 
var B = Context.TableB.First(); 
var C = Context.TableC.First(); 

在這些方案中,將A,B和C使用相同真實連接到數據庫或不連接池抽象這離我遠嗎?

回答

0

經過一番測試,似乎無法確定您是否繼續使用相同的連接。很多時候你會做,但有時你看起來不像。可能是併發性相關的。最終,假設它不明確並且會改變,這可能是最安全的。

相關問題