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>