Принудительная загрузка свойства навигации - PullRequest
9 голосов
/ 10 мая 2011

Я использую EF Code First, и у меня есть свойство навигации, которое называется Category, которое я хочу загружать при каждом вызове:

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

. Для этого мне нужно включать его в каждый вызов.do для Product

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

Есть ли способ загрузить свойство Category с нетерпением, поэтому генерировать SQL-соединение при каждом вызове без необходимости каждый раз включать его?

спасибо

Ответы [ 2 ]

3 голосов
/ 10 мая 2011

Одним простым способом было бы определить метод расширения

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

Что позволяет использовать

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

Не уверен, что это принесет большую пользу ...

1 голос
/ 10 мая 2011

Вы можете использовать вспомогательный метод, предложенный @jeroenh, но он не решит ситуацию, когда вы, например, хотите загрузить заказ со всеми заказанными продуктами и их категориями.EF не имеет автоматической конфигурации загрузки, как, например, доступно в Linq-to-sql.Вы всегда должны использовать Include (напрямую или с помощью вспомогательной конструкции).

...