2009-08-15 33 views
27

Khi tôi thể hiện đối tượng "Đối tượng" trong Khuôn khổ thực thể và thực hiện một số truy vấn bằng cách sử dụng đối tượng Thực thể đó, điều gì sẽ xảy ra với các kết nối?Khi nào Entity Framework mở và đóng các kết nối cơ sở dữ liệu?

  • Có mở kết nối khi tôi thể hiện đối tượng và đóng khi kết nối không?
  • Hay nó mở và đóng kết nối cho mỗi truy vấn tôi thực hiện?

Trong cả hai trường hợp, bạn có thể thay đổi nó để làm việc khác không?

+2

Wow @ pb2q đó là bản chỉnh sửa rất quan trọng đối với câu hỏi 6 năm tuổi! Làm tốt lắm! –

+0

dMagiola: không sao cả. Vui lòng trợ giúp với bất kỳ cải tiến nào: quan trọng hoặc cách khác, cũ hoặc mới. Tiếp tục hỏi bạn thân! – pb2q

Trả lời

26

Về cơ bản nó sẽ mở ra khi một yêu cầu được gọi và đóng lại khi kết quả đã được xử lý hoặc tiêu thụ. Bạn có thể tự mở/đóng hoặc sử dụng các kết nối tương tự sử dụng bối cảnh đối tượng ...

Bài viết này có giải thích đầy đủ hơn - http://msdn.microsoft.com/en-us/library/bb738582.aspx

Đây là Làm thế nào để sử dụng trên một thực thể Connection- các http://msdn.microsoft.com/en-us/library/bb738461.aspx

3

Hành vi đã thay đổi đôi chút trong EF6, cho phép bạn chuyển kết nối mở hoặc tự mở kết nối EF sau. Hãy xem https://msdn.microsoft.com/en-us/library/dn456849(v=vs.113).aspx

+0

Cảm ơn rất nhiều về liên kết - không có cách nào khai báo kết nối mở thông qua mệnh đề 'using' của C#? ví dụ. 'using (var conn = openAConnection())'. Liên kết mà bạn chia sẻ cho thấy việc mở kết nối thủ công đã bị đóng khi bối cảnh liên quan được xử lý, điều này dường như không trực quan và khó hiểu. – aaaaaa

+0

@aaaaaa - có thể bạn đang xem EF5 và ví dụ trước? Trong ví dụ mã thứ hai là mệnh đề 'using' như bạn muốn. Lưu ý rằng bạn chỉ phải lo lắng về điều này nếu bạn thực sự muốn làm điều gì đó theo cách thủ công với kết nối, ví dụ: để thực hiện các câu lệnh bên ngoài EF. Nếu bạn không cần điều đó thì bạn không cần phải suy nghĩ về việc mở và đóng kết nối. – Rory

+0

"Hành vi trong ES6 và các phiên bản trong tương lai": 'conn.Open();'. Đó là dòng làm tôi bực mình. Và có tôi cần nó rõ ràng để có được nhiều bộ kết quả từ một thủ tục được lưu trữ (cố gắng để giữ cho các yêu cầu db đến một cho mỗi lần xem) – aaaaaa

Các vấn đề liên quan