C# 额外的延迟抓取导致DBNull

C# 额外的延迟抓取导致DBNull,c#,nhibernate,mapping,C#,Nhibernate,Mapping,让我们假设以下集合: <list name="Items" inverse="true" cascade="all-delete-orphan" lazy="extra"> <key column="ItemId"/> <index column="Sortorder" /> <one-to-many class="MyProject.Model.Item, MyProject"/> </list> 这确实适用

让我们假设以下集合:

<list name="Items" inverse="true" cascade="all-delete-orphan" lazy="extra">
    <key column="ItemId"/>
    <index column="Sortorder" />
    <one-to-many class="MyProject.Model.Item, MyProject"/>
</list>
这确实适用于lazy=true。我错过了什么

sl3dg3

编辑:整个堆栈跟踪:

[InvalidCastException:无法将对象从DBNull强制转换为其他类型。] System.DBNull.System.IConvertible.ToInt32IFormatProvider提供程序+56 System.Convert.ToInt32对象值+28 NHibernate.Persister.Collection.AbstractCollectionPersister.GetSizeObject键,ISessionImplementor会话+334 NHibernate.Collection.AbstractPersistentCollection.ReadSize+132 NHibernate.Collection.PersistentList.get_Count+12 […]中的MyProject.Provider.MyProvider.SomeMethod

第二次编辑:
如果我用调试器打开集合,则会有一个来自源mscorelib的HResult,听起来好像错误已经出现在.com-world的深处…

我看到的条目可能为null,并且您正在尝试对null值进行计数。在尝试计数之前,最好先检查它是否为null

是的,我也是这么想的-但是为什么NHibernate不以与lazy=true相同的方式初始化空列表?不确定,猜测它是额外的懒惰;-我自己从来没用过。我的所有集合/引用都是惰性的,但总是在查询中根据需要获取它们,从不依赖懒散加载。
if (items.Count > 0) { // Type of items: IList<item>