@ Брендан это подразумевается. Категория может иметь или не иметь дочерние категории.
ла я использую код Entity Framework 4.1 и ASP.NET MVC 3, и я изо всех сил пытаюсь правильно настроить самоссылку. У меня есть категория Категория. Это должно быть самореференция к себе. Категория может быть родительской категорией, когда ParentCategoryId в таблице равен нулю. Если категория имеет ParentCategoryId со значением, то это означает, что она принадлежит родительской категории.
Я следил за этимстатья на код проекта.
Вот мой класс категории:
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string MetaKeywords { get; set; }
public string MetaDescription { get; set; }
public bool IsActive { get; set; }
public virtual Category ParentCategory { get; set; }
public int? ParentCategoryId { get; set; }
}
Мой контекстный класс:
public class PbeContext : DbContext
{
public DbSet<Category> Categories { get; set; }
protected override void OnModelCreating(DbModelBuilder dbModelBuilder)
{
dbModelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
dbModelBuilder.Entity<Category>()
.HasOptional(c => c.ParentCategory)
.WithMany()
.HasForeignKey(p => p.ParentCategoryId);
}
}
Не уверен, что вышеприведенное верно?
Может кто-нибудь помочь мне понять это правильно? Что мне нужно, так это то, что когда я запрашиваю категорию по идентификатору, она должна возвращать родительскую категорию (загружается только при необходимости). Также он должен загружать любые дочерние категории (только при необходимости). Я еще не добавил список в класс категории для дочерних категорий.
Как будут выглядеть вышеупомянутые вопросы, чтобы получить категорию с родительской и дочерней категориями?
РЕДАКТИРОВАТЬ
Вот как я получаю свою категорию:
public Category GetById(int id)
{
return db
.Categories
.Find(id);
}
Поскольку ссылка ParentCategory может быть нулевой, как бы я отобразил это в представлении? У меня есть следующее:
@Model.ParentCategory.Name
..но не выдаст ли ошибку, если категория не имеет родительской категории, связанной с ней? Как бы я отобразил это в представлении?