2012-05-06 67 views
10

Tôi vừa tải xuống EntityFramework.dll v4.3. Tôi đã tìm thấy một số câu hỏi so sánh DbContext so với ObjectContext. Nhưng hầu hết trong số này là từ năm 2010 hoặc đầu năm 2011.Sử dụng 'DbContext' thay vì 'ObjectContext' có tốt hơn không?

Tôi muốn đọc thêm về chủ đề này. Cụ thể, có bất kỳ cuốn sách nào trên DbContext Tôi có thể lấy tay không? Tôi cũng muốn biết, tính đến hôm nay, những hạn chế của DbContext là gì khi so sánh nó với anh trai của mình là ObjectContext?

Tôi nhận thấy rằng DbContext nhỏ gọn hơn ở chỗ nó cho thấy ít thuộc tính hơn. Điều này gợi ý với tôi rằng tôi nên di chuyển từ ObjectContext. Nhưng, nếu tôi làm việc di cư này, tôi sẽ từ bỏ bất kỳ khả năng nào? Ví dụ, tôi đã đọc rằng DbContext không có khả năng STE (Tự theo dõi) khả năng. Điều này vẫn đúng và nó là một mối quan tâm?

+0

Bản sao có thể có của ['ObjectContext' so với 'DbContext' trong khung thực thể] (https://stackoverflow.com/questions/9176967/objectcontext-vs-dbcontext-in-entity-framework) – DavidRR

Trả lời

16

Tôi muốn đọc thêm về chủ đề này. Cụ thể, có bất kỳ sách nào trên DbContext Tôi có thể thực hiện được không?

Câu hỏi của bạn không khởi động tốt vì một truy vấn Google sẽ trả lời bạn. Có một excellent book about DbContext chính nó — nó không chứa bất cứ điều gì về cách tiếp cận Mã đầu tiên, nhưng tôi đoán đó thực sự không phải là điểm của câu hỏi của bạn.

Tôi đã tìm thấy một số câu hỏi mà so sánh DbContext vs ObjectContext. Nhưng hầu hết trong số này là từ năm 2010, hoặc đầu 2011.

Nếu bạn chỉ muốn thay thế ObjectContext + EDMX với DbContext + EDMX, so sánh là vẫn như nhau. DbContext là trình bao bọc xung quanh ObjectContext và bộ tính năng của nó không tăng lên ngoại trừ các tính năng liên quan đến Mã đầu tiên và di chuyển.

Tôi nhận thấy rằng DbContext nhỏ gọn hơn ở chỗ nó tiết lộ ít hơn thuộc tính. Điều này gợi ý với tôi rằng tôi nên di chuyển từ ObjectContext.

Vâng, gọn nhẹ hơn và đơn giản hóa các tác vụ phổ biến nhất mà bạn phải thực hiện với ngữ cảnh. Đối với các tác vụ phức tạp hơn, bạn vẫn có thể chuyển đổi một cá thể DbContext thành cá thể ObjectContext thông qua IObjectContextAdapter.

Nhưng, nếu tôi thực hiện việc di chuyển này, tôi có từ bỏ bất kỳ khả năng nào không? Đối với ví dụ , tôi đã đọc rằng DbContext không có khả năng STE (Tự theo dõi đối tượng). Điều này vẫn đúng và nó là một mối quan tâm?

STE được tạo cho ObjectContext và tôi không nghĩ rằng nó đã được chuyển đến DbContext, nhưng bạn có thể tự mình thực hiện khả năng này.

STEs chỉ là một mẫu có ý tưởng giải quyết một số vấn đề.Nó xuất hiện như một giải pháp lý thuyết tốt nhưng nó không được chấp nhận bởi cộng đồng các nhà phát triển bởi vì giải pháp không phải là rất tốt cho các kịch bản thế giới thực. Đó cũng là lý do tại sao các tính năng quan trọng khác đang được phát triển thay vì cải thiện hoặc chuyển mẫu.

+4

Về STE: "Pháp nhân Nhóm Framework đã không thực hiện bất kỳ cập nhật đáng kể nào cho mẫu Self-Tracking Entities kể từ khi nó được phát hành lần đầu tiên. Họ khuyến cáo rằng các nhà phát triển xem xét sử dụng WCF Data Services như một giải pháp mạnh mẽ hơn và đầy đủ hơn. " (p.76 từ Julia Lerman's _DbContext_) –

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