EF Code First CTP5 Обработка нулевого дочернего объекта - PullRequest
0 голосов
/ 05 апреля 2011

У меня есть объект Product со связанной с ним категорией.

У меня есть связь между продуктом и категорией «Один ко многим».Но Категория также может быть нулевой.

Проблема в том, что я не могу обработать нулевой объект Категория.

Я попробовал следующее в своем классе продукта:

private Category _category;

public virtual Category Category
{
   get { return _category ?? (_category = new Category()); }

   set { _category = value; }
}

Ив методе OnModelCreating моего контекста базы данных:

 modelBuilder.Entity<Product>()
                .HasRequired(p => p.Category)
                .WithMany(c => c.Products)
                .HasForeignKey(p => p.CategoryId);

К сожалению, при доступе к Product.Category в моем уровне дизайна он всегда возвращает экземпляр New Category, а не пытается тянуть Category по Product.CategoryId (1013 * имеет значение).

Как я могу настроить свою модель для обработки нулевой категории?

1 Ответ

0 голосов
/ 05 апреля 2011

Если Category является необязательным (потому что оно может быть нулевым), вы должны использовать:

modelBuilder.Entity () .HasOptional (p => p.Category) .WithMany (c => c.Products) .HasForeignKey (p => p.CategoryId);

И определите ваш продукт как:

public class Product
{
    ...
    public int? CategoryId { get; set; }
    public virtual Category { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...