2009-07-18 33 views
29

Tôi đang sử dụng Entity Framework.Làm thế nào để làm cho Entity Framework cache một số đối tượng

Trong cơ sở dữ liệu của tôi là những người được lưu trữ và quốc gia có nguồn gốc của họ. Khi tôi đang tải một vật thể, tôi không biết địa điểm của mỗi người là gì. Có cách nào để lưu trữ danh sách các quốc gia để không có yêu cầu không cần thiết.

+0

Bump. Có bất cứ điều gì thay đổi với EF trong hơn 5 năm, liên quan đến bộ nhớ đệm bảng tra cứu? Cụ thể, EF đã tích hợp một cách để làm điều này? – RLH

Trả lời

40

Như Luhmann đã nói người bạn đời của tôi, Jarek có một nhà cung cấp bộ đệm mẫu tuyệt vời cho khung thực thể. Mà ông nói về here.

Tuy nhiên đôi khi cách tiếp cận này là quá mức cần thiết và tôi nghi ngờ rằng các quốc gia lưu trong bộ nhớ cache là một ví dụ tốt nơi nỗ lực không đáng giá. Nó có thể tốt hơn để thực hiện một số loại bộ nhớ đệm ad-hoc.

Nếu bạn cố gắng làm điều này, vấn đề chính mà bạn sẽ gặp phải là thực thể Entity Framework chỉ có thể được gắn vào một ObjectContext tại một thời điểm, nghĩa là nếu bạn nhận được yêu cầu đồng thời (như trong trang web) sẽ có vấn đề là bạn chỉ cần lấy các mục từ bộ nhớ cache và sử dụng chúng một cách mù quáng.

Những gì bạn cần là bộ nhớ cache nhân bản, nghĩa là khi bạn lấy nội dung nào đó từ bộ nhớ cache, hãy sao chép chúng.

Tôi đặt cùng một mẹo để minh họa làm thế nào để làm điều này Tip 14 - How to cache Entity Framework Reference Data

Hope this helps

Alex James

Entity Framework Đội Microsoft.

+0

từ thời điểm bạn đã viết mẹo đó cho đến bây giờ, có cách nào đơn giản hơn để lưu trữ dữ liệu tham chiếu với EF 4.1? – Romias

+3

Mẹo hay Alex, có cách tiếp cận tốt hơn với các bản phát hành mới của EF không? – NoChance

0

Tôi sẽ lưu vào bộ nhớ cache danh sách quốc gia đó trước và chỉ định quốc gia phù hợp cho từng người đã truy xuất. Nếu bạn quyết định cũng lưu bộ nhớ cache, bạn nên làm cho chúng phụ thuộc vào các quốc gia được lưu trong bộ nhớ cache và vô hiệu hóa chúng khi bạn thực hiện bất kỳ cập nhật nào cho danh sách quốc gia/quốc gia.

8

Bạn có thể xem qua sốtuyệt vời của Jaroslaw Kowalski.

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