He utilizado join en linq para unir 2 tablas. ¿Cuál es la diferencia entre un join y Include? Por lo que veo, ambos se comportan igual.LINQ Include vs Join. ¿Son equivalentes?
Include vs. Join
He utilizado join en linq para unir 2 tablas. ¿Cuál es la diferencia entre un join y Include? Por lo que veo, ambos se comportan igual.LINQ Include vs Join. ¿Son equivalentes?
Include vs. Join
Una función incluida está destinada a conservar las estructuras y gráficos de objeto originales. Se necesita una unión para proyectar una representación aplanada del gráfico de objetos o para unir tipos que no están relacionados de forma natural a través del gráfico (es decir, unir la ciudad del cliente con la ciudad de una instalación de envío).
Compare los siguientes: db.Customers.Include("Orders")
genera un gráfico de objetos como esto:
Customer
Order
Order
Order
Por el contrario, si lo hace lo mismo con una unión que se proyecta en un tipo anónimo que usted podría conseguir lo siguiente:
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>
Si bien ambos pueden emitir la misma solicitud a la base de datos, el tipo resultante puede ser bastante diferente.
En cierto sentido, sí. Incluir se implementa como una unión. Dependiendo de la nulabilidad del enlace incluido, es una unión interna o izquierda.
Siempre se puede construir un incluirse a sí mismo mediante el uso de una combinación, de esta manera:
db.Users.Select(u => new { u, u.City })
Ésta es una "incluir" de la ciudad del usuario. Se manifiesta como una unión SQL.
Hola, ¿pueden ver http://stackoverflow.com/q/18809817/859154? se trata de algo que dijiste aquí en tu respuesta. –
pero es el resultado el mismo y es cuando es aconsejable utilizar el .Include vs a join –
No, la unión produce un tipo anónimo (TResult) a través de SelectMany. el Include produce TSource con TCollection cargados ansiosamente en lugar de cargados de pereza. –