2012-09-05 28 views

Trả lời

23

Được bao gồm nhằm giữ lại cấu trúc và đồ thị đối tượng ban đầu. Tham gia là cần thiết để trình bày một biểu diễn phẳng của đồ thị đối tượng hoặc tham gia các loại không liên quan tự nhiên thông qua biểu đồ (ví dụ: tham gia thành phố của khách hàng với thành phố của cơ sở giao hàng).

Hãy so sánh như sau: db.Customers.Include("Orders") Tạo một đồ thị đối tượng như thế này:

Customer 
    Order 
    Order 
    Order 

Ngược lại, nếu bạn làm tương tự với một tham gia dự vào một loại vô danh, bạn có thể nhận được như sau:

from c in db.Customers 
join o in db.Orders on c.CustomerId equals o.CustomerId 
select new {c, o} 

// produces new Anonymous<Customer, Order> 

Mặc dù cả hai có thể đưa ra yêu cầu tương tự cho cơ sở dữ liệu, loại kết quả có thể khác nhau.

+1

nhưng là kết quả giống nhau và có khi nào nên sử dụng .Include vs a join –

+1

Không, phép nối tạo ra một kiểu ẩn danh (TResult) thông qua SelectMany . bao gồm sản xuất TSource với TCollection háo hức nạp chứ không phải là tải lười biếng. –

9

Theo nghĩa nào đó, có. Bao gồm được thực hiện như một tham gia. Tùy thuộc vào tính vô hiệu của liên kết được bao gồm, nó là một tham gia bên trong hoặc bên trái.

Bạn luôn có thể xây dựng một bao gồm chính mình bằng cách sử dụng một tham gia, như thế này:

db.Users.Select(u => new { u, u.City }) 

này là một "bao gồm" cho thành phố của người dùng. Nó thể hiện chính nó như là một tham gia SQL.

+0

Xin chào, bạn có thể xem http://stackoverflow.com/q/18809817/859154 không? đó là về một cái gì đó bạn đã nói ở đây trong câu trả lời của bạn. –

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