Я использовал объединение в linq для объединения двух таблиц. В чем разница между соединением и Include. Из того, что я вижу, они оба ведут себя одинаково.
Include vs. Join
Ответ 1
An Included предназначен для сохранения исходных структур объектов и графиков. Объединение необходимо для проектирования сплющенного представления графа объектов или для объединения типов, которые не связаны естественным образом через график (т.е. Присоединяются к городу клиента с городом доставки).
Сравните следующее:
db.Customers.Include("Orders")
Создает граф объектов следующим образом:
Customer
Order
Order
Order
В отличие от этого, если вы делаете то же самое с объединением, проецирующимся в анонимный тип, вы можете получить следующее:
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>
Хотя оба варианта могут выдавать один и тот же запрос в базу данных, результирующий тип может быть совсем другим.
Ответ 2
В некотором смысле, да. Include реализуется как объединение. В зависимости от недействительности включенной ссылки это внутреннее или левое соединение.
Вы всегда можете создать включить себя, используя соединение, например:
db.Users.Select(u => new { u, u.City })
Это "включить" для города пользователя. Он проявляет себя как соединение SQL.