2010-09-10 30 views
9

Ok, tôi từ bỏ ...EF DbContext và StructureMap scoping

Điều tôi muốn là chia sẻ cá thể DbContext của EF4 theo yêu cầu. Tôi cấu hình StructureMap như thế này:

For<MyContext>().Use(new MyContext("LocalhostConnString")); 

Nhưng khi tôi làm mới trang web của tôi, hoặc thậm chí mở nó trong trình duyệt khác, tôi nhận được cùng dụ chính xác của MyContext. Tại sao điều này được chia sẻ qua các yêu cầu?

Tôi có thiếu gì đó không?

Trả lời

13

Có ... khoảng 4 ký tự. Hãy thử:

For<MyContext>().Use(() => new MyContext("LocalhostConnString")); 

Nếu bạn cho StructureMap một thể hiện đối tượng, nó sẽ xử lý trường hợp đó dưới dạng singleton và trả về cùng một lần. Nếu thay vào đó bạn cung cấp cho nó một lambda tạo ra một cá thể, nó sẽ chạy lambda đó mỗi lần loại được yêu cầu.

+1

Không thể nào ... đó là nó, nó hoạt động! Chết tiệt, cảm ơn :) – Darmak

+1

Vì vậy, "mỗi lần loại được yêu cầu", nhưng không một lần cho mỗi yêu cầu? –

+1

@Roman Royter Chính xác câu hỏi của tôi. Tôi nên làm như thế nào theo yêu cầu? – forhas

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