@ Брендан это подразумевается. Категория может иметь или не иметь дочерние категории.

ла я использую код 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

..но не выдаст ли ошибку, если категория не имеет родительской категории, связанной с ней? Как бы я отобразил это в представлении?

Ответы на вопрос(1)

Ваш ответ на вопрос