EF Code First CTP5 Null子对象处理

时间:2011-04-05 09:54:20

标签: entity-framework ef-code-first entity-framework-ctp5

我有一个Product对象,其中包含相关的类别。

我将产品和类别之间的关系作为一对一的关系。但是类别也可以为空。

麻烦的是我似乎无法处理null Category对象。

我在我的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实例,而不是尝试通过Product.CategoryId( 有一个值)拉出Category。 / p>

如何设置我的模型来处理null Category?

1 个答案:

答案 0 :(得分:0)

如果Category是可选的(因为它可以为null),则必须使用:

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

将您的产品定义为:

public class Product
{
    ...
    public int? CategoryId { get; set; }
    public virtual Category { get; set; }
}