指定何时返回null以及何时根据ID投入流畅的nHibernate

时间:2011-07-20 16:53:35

标签: c# nhibernate fluent-nhibernate nhibernate-mapping fluent-nhibernate-mapping

我们正在使用遗留代码库,这个代码库有一个非常粗略的数据模型。现在,我们有一个如下所示的对象映射:

using FluentNHibernate.Mapping;
using Validation.Domain;

namespace Validation.DomainMaps
{
    public sealed class BookMap : SubclassMap<Book>
   {
        public BookMap()
        {
            Map(x => x.Genre);

            References(x => x.Shelf, "ShelfId")
                .Nullable()
                .Not.LazyLoad()
                .NotFound.Ignore()
                .Cascade.All()
                .Fetch.Join();
        }
    }
}

在应用程序中,没有书架的书的ShelfId为0.在Shelf表中没有ID为0的行,我们依赖于nhibernate的.NotFound.Ignore()返回null我们将检查并稍后处理。

这让我们走得这么远但是,现在我们试图在我们尝试访问Shelf表中没有条目的非0 ShelfId时抛出异常。

理想情况下,nhibernate只会在找不到具有非0 Id的Shelf并且在被要求提供Id为0的Shelf时返回null的情况下抛出异常。

任何帮助都是特殊的!

1 个答案:

答案 0 :(得分:0)

这并不完美,但任何想要做这类事情的人都应该采取一个雄鸽here