当前位置:  开发笔记 > 后端 > 正文

NHibernate中的空值对象

如何解决《NHibernate中的空值对象》经验,为你挑选了1个好方法。

我有一个包含Address作为值对象的person实体:

public Person()
{
    WithTable("Person");
    Id(x => x.Id);
    Component
(x => x.Address, a => { a.Map(x => x.Address1); a.Map(x => x.Address2); a.Map(x => x.Address3); a.Map(x => x.Town); a.Map(x => x.Postcode); }); }

它在NHibernate文档中指出,如果值对象(Address1,Address2等)的所有属性都为null,则整个组件将被映射为null(即Person.Address将为null).这给了我所有地址字段为空的情况下的问题,因为在我的网页中我可能有(我正在做ASP MVC):

<%= Html.TextBoxFor((x => x.Address.Address1))%>

这打破了空引用异常.所以我正在寻找一种简洁的方法将Address设置为一个新的Address()对象而不是null,如果我从数据库加载Person而不手动操作时所有字段都是空的.我打了以下想法:

在我的视图中进行空检查(yuk,可怕)

使数据库字段不可为空(我正在处理遗留数据库)

任何想法?



1> James Allen..:

感谢James的想法(请参阅他的回答和评论),我修改了Person实体的Address属性:

public virtual string Address { get; set; }

至:

private Address _address;
public virtual Address Address
{
    get { return _address ?? new Address(); }
    set { _address = value; }
}

这解决了我的问题,它的工作原理,似乎与NHibernate一起使用.Yey!

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有