2009-08-15 129 views
27

當我在實體框架中實例化我的「實體」對象,並使用該實體對象進行一些查詢時,連接會發生什麼?實體框架何時打開和關閉數據庫連接?

  • 當我實例化對象時是否打開連接,並在處理它時關閉它?
  • 或者它打開和關閉我執行的每個單個查詢的連接?

在任何一種情況下,是否可以改變它,以便它可以做到另一件事?

+2

哇@ pb2q這是一個非常重要的編輯6年的老問題!做得很好! – 2015-09-05 21:14:01

+0

dMagiola:沒問題。樂於幫助進行任何改進:重要的或其他的,舊的或新的。繼續問好友! – pb2q 2015-09-08 03:56:52

回答

3

EF6中的行爲有所改變,允許您傳遞打開的連接或稍後自行打開EF連接。退房https://msdn.microsoft.com/en-us/library/dn456849(v=vs.113).aspx

+0

非常感謝鏈接 - 是否沒有辦法通過c#的''using'子句聲明一個開放連接?例如'使用(var conn = openAConnection())'。您分享的鏈接顯示手動打開連接,當相關的上下文被處理時這些連接會被關閉,這看起來很不直觀,而且非常黑客。 – aaaaaa 2017-09-20 02:15:24

+0

@aaaaaa - 也許你在看EF5和前面的例子?在第二個代碼示例中,像你想要的那樣使用''using'子句。請注意,如果您真的想用連接手動執行某些操作,您只需要擔心這一點,例如在EF之外執行語句。如果你不需要,那麼你根本不需要考慮打開和關閉連接。 – Rory 2017-09-20 22:47:11

+0

「ES6和未來版本中的行爲」:'conn.Open();'。這是令我煩惱的線路。是的,我需要它顯然是從存儲過程中獲得多個結果集(試圖保持db請求每個視圖一個) – aaaaaa 2017-09-20 23:57:32