4
我试图映射同一类/表的父/子之间的biredictional多对一关系。 这里是映射:流利NHibernate双向多对一IConvertible异常
References(x => x.Parent).Column("ParentID");
HasMany(x => x.Children).KeyColumn("ParentID").Inverse().Cascade.All();
当我试图挽救父母带着孩子,我得到以下错误列表
System.InvalidCastException:对象必须实现IConvertible。
如果父/子是两个不同的类/表,上面的映射工作。 我也试图通过去除使映射单向:
References(x => x.Parent).Column("ParentID");
然后,我可以节省,但如果我取一个孩子家长为null。
任何想法如何解决这个问题?
Fit.Server.Persistence.Test.Repositories.SagOpgave.SagOpgavePersistenceTest.Opgave_gets_references抛出异常:
System.InvalidCastException:对象必须实现IConvertible。
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType)
at Pervasive.Data.SqlClient.PsqlParameter.a(Type A_0)
at Pervasive.Data.SqlClient.q.a(PsqlParameter A_0, k A_1, a3 A_2, Int32 A_3)
at Pervasive.Data.SqlClient.q..ctor(PsqlParameter A_0, k A_1, Int32 A_2, Int32 A_3, Int32 A_4)
at Pervasive.Data.SqlClient.PsqlParameterCollection.a(k A_0, Int32 A_1, Int32 A_2, Int32 A_3)
at Pervasive.Data.SqlClient.PsqlCommand.a(Boolean A_0, CommandBehavior A_1, Boolean A_2)
at Pervasive.Data.SqlClient.PsqlCommand.ExecuteNonQuery()
at NHibernate.AdoNet.AbstractBatcher.ExecuteNonQuery(IDbCommand cmd)
at NHibernate.AdoNet.NonBatchingBatcher.AddToBatch(IExpectation expectation)
at NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object id, Object[] fields, Boolean[] notNull, Int32 j, SqlCommandInfo sql, Object obj, ISessionImplementor session)
at NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object id, Object[] fields, Object obj, ISessionImplementor session)
at NHibernate.Action.EntityInsertAction.Execute()
at NHibernate.Engine.ActionQueue.Execute(IExecutable executable)
at NHibernate.Engine.ActionQueue.ExecuteActions(IList list)
at NHibernate.Engine.ActionQueue.ExecuteActions()
at NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecutions(IEventSource session)
at NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent event)
at NHibernate.Impl.SessionImpl.Flush()
at NHibernate.Transaction.AdoTransaction.Commit()
找到一个迄今为止工作的解决方案。
References(x => x.Parent).Column("ParentID").Not.Insert();
HasMany(x => x.Children).KeyColumn("ParentID").Cascade.All();
您是否有该异常的堆栈跟踪? – 2013-03-05 13:44:22
当您发布堆栈跟踪时,您已明确询问您是否要发布问题答案,并且您被告知应该更新问题,而不是要提供其他信息。这些消息是为了阅读。所以:请用堆栈跟踪更新您的问题并删除您的不回答。 – 2013-03-05 14:06:44
这个类的id映射是什么? – Firo 2013-03-13 13:52:39