FluentNhibernate-映射列表导致NullReferenceException?我有以下类和流畅的映射:publicclassA{publicvirtualintId{get;私有集;}publicvirtualstringMyString{get;放;}publicvirtualIListMyChildren{get;放;}}publicclassB{public}publicvirtualDateTimeTheDate{get;放;}}publicsealedclassAMap:ClassMap{publicAMap(){Id(x=>x.Id).GeneratedBy.Native().UnsavedValue(0);地图(x=>x.MyString);HasMany(x=>x.MyChildren).AsList(x=>x.Column("Ordinal")).KeyColumn("AId").Not.KeyNullable();}}publicsealedclassBMap:ClassMap{publicBMap(){Id(x=>x.Id).GeneratedBy.Native().UnsavedValue(0);地图(x=>x.TheDate);这导致A的以下映射:但是当我实际尝试保存A的实例时,我得到NullReferenceException:System.NullReferenceException:Objectreferencenotsettoaninstanceofanobject。在NHibernate。NHibernate.Engine.CollectionEntry..ctor(ICollectionPersister持久器,IPersistentCollection集合)在NHibernate.Engine.StatefulPersistenceContext.AddNewCollection(ICollectionPersister持久器,IPersistentCollection集合)在NHibernate.Event.Default.Default.WrapViraysitor.WrapViraysitor(对象集合,CollectionType集合类型)在NHibernate.Event.Default.WrapVisitor.ProcessCollection(对象集合,CollectionType集合类型)在NHibernate.Event.Default.AbstractVisitor.ProcessValue(对象值,IType类型)在NHibernate.Event.Default.WrapVisitor。在NHibernate.Event.Default.AbstractSaveEventListener.VisitCollectionsBeforeSave(对象实体,对象ID、对象[]值、IType[]类型、IEventSource源)在NHibernate.Event.Default.AbstractSaveEventListener.PerformSaveOrReplicate(对象实体,EntityKey键,IEntityPersister持久性,布尔useIdentityColumn,对象任何东西,IEventSource源,布尔requiresImmediateIdAccess)在NHibernate.Event.Default.AbstractSaveEventListener.PerformSave(对象实体,对象id,IEntityPersisterpersister,BooleanuseIdentityColumn,Objectanything,IEventSourcesource,BooleanrequiresImmediateIdAccess)在NHibernate.Event.Default.AbstractSaveEventListener.SaveWithGeneratedId(Objectentity,StringentityName,Objectanything,IEventSourcesource,BooleanrequiresImmediateIdAccess)在NHibernate.Event.Default。DefaultSaveOrUpdateEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent事件)在NHibernate.Event.Default.DefaultSaveEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent事件)在NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.EntityIsTransient(SaNHibernate.Event.Default.DefaultSaveEventListener.PerformSaveOrUpdate(SaveOrUpdateEvent事件)在NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate(SaveOrUpdateEvent事件)在NHibernate.Impl.SessionImpl.FireSave(SaveOrUpdateEvent事件)Save(Objectobj)我在这里做错了什么?澄清:这就是我使用这些类的方式:vara=newA{MyChildren=newList{newB{TheDate=DateTime.Now}}};a.MyChildren[0].Parent=a;session.Save(a);您应该添加MyChildren=NewList();到您的构造函数对于子集合,您的键列不应该是“Id”(而不是“AId”)吗?我认为这是你问题的根源......我想通了上面的例子确实有效,但我试图重现的问题仍在运行,导致同样的错误。抱歉...问题是我们创建了这个ChildList类,我们为MyChildren属性返回了该类。它只是包装了List(或NHibernate用于持久列表的任何具体列表),但它负责在添加到集合或从集合中删除的任何实例上设置Parent属性。显然,即使在保存新实例时,这也会导致NHibernate出现问题。返回一个普通的具体列表是有效的。以上就是C#学习教程:FluentNhibernate-mappinglistwillcauseNullReferenceException?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
