2011-05-10 10 views
9

estoy usando Código EF Primera y tengo una propiedad de navegación llamada Categoría que quiero ansiosos cargado en cada llamada:Forzar deseosos de carga para una propiedad de navegación

public class Product 
{ 
    ... 
    public Category Category { get; set; } 
} 

Para hacer esto tengo que incluirlo en cada llamada que voy a hacer en el producto

var results = from p in db.Products.Include("Category") select p; 

¿hay una manera de tener la propiedad Categoría ansiosos cargado, por lo tanto, la generación de un SQL se unen, en cada llamada sin tener que incluir cada vez?

agradecimiento

+0

¿Está buscando desactivar la carga diferida para todo el contexto o solo estas entidades específicas? –

Respuesta

1

Puede usar el método de ayuda propuesto por @jeroenh, pero no lo hará Hay una situación en la que, por ejemplo, desea cargar el pedido con todos los productos pedidos y sus categorías. EF no tiene ninguna configuración automática de carga ansiosa, como por ejemplo disponible en Linq-sql. Siempre debe usar Include (ya sea directamente o mediante alguna construcción auxiliar).

3

Una forma sencilla sería la de definir un método de extensión

static class DbExtensions{ 
    public IQueryable<Product> ProductsWithCategories(this MyContext db) { 
     return db.Products.Include("Category"); 
    } 
} 

cual le permite utilizar

var results = from p in db.ProductsWithCategories() select p; 

No estoy seguro si trae mucho beneficio, aunque ...

+0

Pensé en eso, pero me preguntaba si había una forma estándar, a través de anotaciones de datos de API fluido, de siempre ansioso de cargar :) –

Cuestiones relacionadas