У меня есть установка отношения родитель-ребенок, которая является довольно простой. Конечным результатом является то, что я хочу иметь возможность возвращать полученные таблицы в виде JSON через ASP.NET MVC WebAPI. Я использую Entity Framework 5.0 beta 2.
Я могу продемонстрировать ошибку, с которой сталкиваюсь, на простом примере. Даны классы Category
и Product
с соответствующим контекстом данных:
public class Category
{
public int CategoryId { get; set; }
public string Title { get; set; }
public virtual IEnumerable<Product> Products { get; set; }
}
public class Product
{
public int ProductId { get; set; }
public string Title { get; set; }
public virtual Category Category { get; set; }
public virtual int CategoryId { get; set; }
}
public class ProductDataContext : DbContext
{
public DbSet<Category> Categories { get; set; }
public DbSet<Product> Products { get; set; }
}
Когда я пытаюсь выполнить запрос, который включает продукты, я получаю следующую ошибку:
A specified Include path is not valid. The EntityType 'FooAndBar.Category'
does not declare a navigation property with the name 'Products'.
Утверждение для извлечения довольно просто:
var everything = dc.Categories
.Include(c => c.Products);
Как правильно настроить столбцы и / или запрос, чтобы Products
были включены в Categories
?
Свойства ICollection<T>
коллекции должны быть объявлены как ICollection<T>
, а не IEnumerable<T>
.
Кроме того, вам не нужно явно добавлять поле CategoryId
в дочерний класс; EF создаст это автоматически в базе данных.