EF Code First CTP5 空子对象处理
我有一个产品对象,其中有一个相关的类别。
我的产品和类别之间的关系是一对多。但类别也可以为空。
问题是我似乎无法处理 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( 确实有一个值)。
如何设置我的模型来处理空类别?
I have a Product object with a related Category within it.
I have the relationship between product and Category as a One to Many. But the Category can also be null.
Trouble is I cannot seem to handle null Category object.
I tried the following in my Product class:
private Category _category;
public virtual Category Category
{
get { return _category ?? (_category = new Category()); }
set { _category = value; }
}
And on my Database Context OnModelCreating method:
modelBuilder.Entity<Product>()
.HasRequired(p => p.Category)
.WithMany(c => c.Products)
.HasForeignKey(p => p.CategoryId);
Unfortunately on accessing the Product.Category in my design layer it always returns the New Category instance, rather than try to pull the Category by the Product.CategoryId (which does have a value).
How can I can setup my model to handle null Category?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果
Category
是可选的(因为它可以为空),则必须使用:modelBuilder.Entity()
.HasOptional(p => p.Category)
.WithMany(c => c.Products)
.HasForeignKey(p => p.CategoryId);
并将您的产品定义为:
If the
Category
is optional (it is because it can be null) you must use:modelBuilder.Entity()
.HasOptional(p => p.Category)
.WithMany(c => c.Products)
.HasForeignKey(p => p.CategoryId);
And define your product as: