2010-08-12 31 views
56

Tôi đang theo một hướng dẫn bởi Scott Gu đề cập đến một lớp có tên là DbContext. Tôi không thể tìm thấy nó trên bất kỳ không gian tên trên khuôn khổ 4 và có vẻ như với tôi nó đã được đổi tên từ CT4 DbContext thành .net4 System.Data.Linq.DataContext. Giả định của tôi có đúng không?DbContext có giống với DataContext không?

+0

bạn đã tải xuống CTP chưa? Tôi tin rằng nó sử dụng một không gian tên như System.Data.Entities.CTP hoặc somesuch ... – AllenG

+0

Tôi không có. Nhưng tôi đã tìm hiểu về ObjectContext. Vì đây là một hệ thống sản xuất, tôi không thể sử dụng CTP. –

+5

NB Tôi biết rõ ràng nhưng 'System.Data.Linq.DataContext' là từ LINQ To Sql và' DbContext' là từ Entity Framework –

Trả lời

86

DbContext là một lớp mới được thêm vào trong bản tải xuống riêng biệt gần đây của nhóm EF. Nó hiện không phải là một phần của lõi EF 4.0. Tuy nhiên, DbContext sẽ tiếp tục là cách ưa thích để tương tác với EF.

Vậy nó khác với ObjectContext như thế nào? Vâng ngữ nghĩa họ là chính xác giống nhau nhưng họ giảm rất nhiều tiếng ồn thêm rằng ObjectContext đã có. Giống như phơi bày một bộ cần làm việc nhiều hơn, ví dụ:

public ObjectSet<Customer> Customers 
{ 
    get { return db.CreateObjectSet<Customer>(); } 
} 

Với DbContext bạn có thể làm:

public DbSet<Customer> Customers { get; set; } 

Về cơ bản trên ObjectContext, khi bạn làm dấu chấm (.), mọi thứ đều vừa phải có mà làm cho danh sách khá lớn. Những gì nhóm EF thực sự muốn vạch trần trên DbContext là những thực thể chỉ dành riêng cho miền của bạn và phần còn lại của khả năng của khung được giấu trong các thuộc tính khác nhau. Nó chỉ làm cho kinh nghiệm lập trình dễ dàng hơn.

Điều này có nghĩa là nếu bạn đang sử dụng ObjectContext ngay bây giờ, với một chút mã, bạn có thể dễ dàng di chuyển đến DbContext.

+1

Bất kỳ ý tưởng nào khi nó sẽ được hợp nhất vào chi nhánh khung chính? –

+6

EF 4.1 đã được phát hành vào ngày 11 tháng 4 năm 2011. Xem http://blogs.msdn.com/b/adonet/archive/2011/04/11/ef-4-1-released.aspx để biết chi tiết. – villecoder

+1

Điều này không liên kết với EF cho toàn bộ dự án của bạn, nói rằng bạn đã có một lớp kinh doanh? – Coops

6

Hơi muộn một chút, nhưng đối với các googlers. DbContext được sử dụng cho EF (EntityFramework) và DataContext được sử dụng cho L2S (LINQ to SQL).

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