Сопоставление самоссылающегося объекта в EF Code First

В моей базе данных есть таблица Category со столбцами Id, CategoryName, ParentCategoryId, где ParentCategoryId имеет ограничение на Category.Id.

Сначала я использую код структуры сущностей, где сущность выглядит следующим образом:

public class Category
{
   public long Id { get; private set; }
   public string CategoryName { get; private set; }
   public long? ParentCategoryId { get; private set; }
   public Category ParentCategory { get; private set; }       
   public virtual ICollection<Category> SubCategories { get; private set; }
}

Если я попытаюсь выполнить запрос к этому, я получу исключение:

 The relationship 'ComplaintModel.FK_Complaint_Category' was not loaded because the type 'ComplaintModel.Category' is not available.\r\nThe following information may be useful in resolving the previous error:\r\nThe required property 'Category1' does not exist on the type 'EC.Complaint.Services.Command.Domain.Entities.Category'.\r\n\r\n"}    System.Exception {System.Data.MetadataException}

Так что, похоже, ему нужны свойства навигации, если я добавлю эти:

 public ICollection<Category> Category1 { get; private set; }
 public long? Category2Id { get; private set; }
 public Category Category2 { get; private set; }

запрос работает.

Но, конечно, мне не нужны свойства Category1 и Category2, я хочу, чтобы использовались свойства ParentCategories и SubCategories.

Как я могу сначала указать коду использовать правильные свойства навигации?

6
задан abatishchev 13 March 2012 в 12:26
поделиться