我有一个很大的问题!在nhibernate中映射具有多个联合子类的抽象类时,我不断收到异常。 当我只使用一个联合子类时,我没有得到任何错误,一切正常。当我使用多个子类此错误occures:对象与目标类型不匹配发生异常getter
[TargetException:对象不匹配目标类型] System.Reflection.RuntimeMethodInfo.CheckConsistency(目标对象)10909543 System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(对象obj,BindingFlags invokeAttr,Binder binder,Object []参数,CultureInfo culture)+11 System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object []参数,CultureInfo culture)+54 System.Reflection .RuntimePropertyInfo.GetValue(对象OBJ,的BindingFlags invokeAttr,粘结剂粘结剂,对象[]索引,CultureInfo的培养)61 System.Reflection.RuntimePropertyIn fo.GetValue(对象OBJ,对象[]索引)19 NHibernate.Properties.BasicGetter.Get(目标对象)99
[的PropertyAccessException:异常发生MedControlWeb.Models.Logs.Log.Code的吸气剂] NHibernate.Properties.BasicGetter.Get(目标对象)183 NHibernate.Engine.UnsavedValueFactory.GetUnsavedIdentifierValue(字符串unsavedValue,IGetter identifierGetter,ITYPE identifierType,ConstructorInfo构造函数)160 NHibernate.Tuple.PropertyFactory.BuildIdentifierProperty(对PersistentClass mappedEntity,IIdentifierGenerator发生器)200 NHibernate.Tuple.Entity.EntityMetamodel..ctor(对PersistentClass对PersistentClass,ISessionFactoryImplementor的sessionFactory)775 NHiber nate.Persister.Entity.AbstractEntityPersister..ctor(对PersistentClass对PersistentClass,ICacheConcurrencyStrategy缓存,ISessionFactoryImplementor工厂)835 NHibernate.Persister.Entity.UnionSubclassEntityPersister..ctor(对PersistentClass对PersistentClass,ICacheConcurrencyStrategy缓存,ISessionFactoryImplementor工厂,IMapping映射)220 NHibernate的.Persister.PersisterFactory.CreateClassPersister(PersistentClass模型,ICacheConcurrencyStrategy缓存,ISessionFactoryImplementor工厂,IMapping cfg)+369 NHibernate.Impl.SessionFactoryImpl..ctor(配置cfg,IMapping映射,设置设置,EventListeners监听器)+2199 NHibernate.Cfg。 Configuration.BuildSessionFactory()+181
我的HBM文件:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="MedControlWeb"
namespace="MedControlWeb.Models.Logs">
<class name="Log" abstract="true" lazy="false">
<id name="Code" column="code">
<generator class="hilo"/>
</id>
<property name="Description" column="description"/>
<property name="User" column="user"/>
<property name="Timestamp" column="timestamp"/>
<property name="Action" column="action"/>
<union-subclass name="SettingsLog" table="settings_log" lazy="false">
</union-subclass>
<union-subclass name="JobLog" table="job_log" lazy="false">
</union-subclass>
</class>
</hibernate-mapping>
我的抽象超类:
public class Log
{
public int Code { get; set; }
public DateTime Timestamp { get; set; }
public MedControlWeb.Enums.Action Action { get; set; }
public string Description { get; set; }
public int User { get; set; }
}
一个子类:
public class SettingsLog : Log
{
}
我要去哪里错了?
编辑: 我能做些什么来解决这个问题?我没有看到我可以修复它,因为我有适当的get方法?
这个例外似乎很清楚。你有什么特别的困难?如果你真的需要帮助,你应该发布一个更好的代码示例。请参阅http://stackoverflow.com/help/mcve – 2014-11-05 20:29:17
感谢您的回复!很抱歉,我编辑了这个问题。我没有看到我应该怎样更好地吸气。我希望你会? – 2014-11-05 21:11:43