2008-09-27 16 views
7

Gần đây tôi đã yêu cầu một số question about tracing Linq-to-EntitiesCó một DataContext trong LINQ-to-Entities (KHÔNG LINQ-SQL) không?

Tôi nghĩ rằng one of the answers không đúng, vì chúng đề cập đến việc sử dụng DataContext. Có một DataContext cho LINQ-to-Entities? Nếu vậy, làm thế nào để có được nó?

+1

Đối với những người nhìn thấy câu hỏi này bây giờ (câu hỏi là một vài tuổi), DataContext nên cũng không bị nhầm lẫn với DbContext tìm thấy trong Entity Framework 4.1 :-) –

Trả lời

10

LINQ to Entities sử dụng ObjectContext, không phải DataContext.

Đây là một mô tả ngắn về EF:

LINQ to Entities, the ObjectContext Class, and the Entity Data Model

LINQ to Entities truy vấn sử dụng Object Dịch vụ cơ sở hạ tầng. Lớp ObjectContext là lớp chính để tương tác với một đối tượng CLM là CLR. Nhà phát triển xây dựng một cá thể ObjectQuery thông qua ObjectContext. Lớp ObjectQuery chung đại diện cho một truy vấn trả về một cá thể hoặc tập hợp các thực thể đã nhập. Đối tượng thực thể được trả về bởi ObjectQuery được theo dõi bởi Ngữ cảnh đối tượng và có thể được cập nhật bằng cách sử dụng phương thức SaveChanges .

Nó thậm chí không hoạt động giống như DataContext trong LINQ to SQL. Mặc dù cả hai đều quản lý kết nối và theo dõi các thay đổi, nhưng chúng khác nhau về cách chúng mô hình cấu trúc dữ liệu và các mối quan hệ.

Tôi sẽ cung cấp cho người đăng tải một câu trả lời sai, vì LINQ to SQL có tham chiếu đến "thực thể" và một người không quen thuộc với EF có thể vẫn nghĩ họ biết bạn đang nói về cái gì.

Ví dụ:

LINQ to SQL and the DataContext Class

Các DataContext là nguồn của tất cả các thực ánh xạ trên một cơ sở dữ liệu kết nối . Nó ca khúc thay đổi mà bạn đã thực hiện tất cả các thực lấy và duy trì một "bộ nhớ cache sắc" mà đảm bảo rằng tổ chức lấy hơn một lần được đại diện bằng cách sử dụng các đối tượng dụ cùng .

Nó có thể gây nhầm lẫn.

5

Rõ ràng, LINQToEntities sử dụng ObjectContext thay vì DataContext.

Thật vui khi nhóm đối tượng thực hiện một DataContext và nhóm dữ liệu đã thực hiện một ObjectContext (và vào DataQuery vs ObjectQuery, vv) "Đặt tên là cứng!"


Update, cho .net 4 với EF4.1, bạn có thể cũng quan tâm đến việc DbContext khi làm việc với LinqToEntities. Xem also.

0

của những khác biệt cú pháp đơn phương này. Ví dụ. SubmitChanges (L2S) và SaveChanges (L2E). Tuy nhiên, đó sẽ chỉ là điểm mấu chốt của sự khác biệt giữa hai công nghệ.

1

Tôi nghĩ bạn có thể đang đề cập đến Mô hình dữ liệu thực thể ADO.NET (tệp .edmx - có thể so sánh với tệp .dbml).

Trong VS nó được nhìn thấy trong Thêm item-> ADO.NET Entity Data Model