私は大きな問題を抱えています!nhibernate で抽象クラスを複数のユニオン サブクラスにマッピングすると、例外が発生し続けます。ユニオン サブクラスを 1 つだけ使用すると、エラーは発生せず、すべて正常に動作します。さらにサブクラスを使用すると、次のエラーが発生します。
[TargetException: オブジェクトがターゲット タイプと一致しません。] System.Reflection.RuntimeMethodInfo.CheckConsistency(オブジェクト ターゲット) +10909543 System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(オブジェクト obj、BindingFlags invokeAttr、バインダー バインダー、Object[] パラメーター、CultureInfo カルチャ) + 115 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder バインダー, Object[] パラメータ, CultureInfo カルチャ) +54 System.Reflection.RuntimePropertyInfo.GetValue(Object obj, BindingFlags invokeAttr, Binder バインダー, Object[] インデックス, CultureInfo カルチャ) +61 System.Reflection.RuntimePropertyInfo.GetValue(Object obj, Object[] index) +19 NHibernate.Properties.BasicGetter.Get(オブジェクト ターゲット) +99
[PropertyAccessException: MedControlWeb.Models.Logs.Log.Code の getter で例外が発生しました] NHibernate.Properties.BasicGetter.Get(オブジェクト ターゲット) +183 NHibernate.Engine.UnsavedValueFactory.GetUnsavedIdentifierValue(String unsavedValue, IGetter identifierGetter, IType identifierType, ConstructorInfo constructor) +160 NHibernate.Tuple.PropertyFactory.BuildIdentifierProperty(PersistentClass MappedEntity、IIdentifierGenerator ジェネレーター) +200 NHibernate.Tuple.Entity.EntityMetamodel..ctor(PersistentClass persistentClass、ISessionFactoryImplementor sessionFactory) +775 NHibernate.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 マッピング、Settings 設定、EventListeners リスナー) +2199 NHibernate.Cfg.Configuration.BuildSessionFactory() +181ctor(構成 cfg、IMapping マッピング、設定設定、EventListeners リスナー) +2199 NHibernate.Cfg.Configuration.BuildSessionFactory() +181ctor(構成 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; }
}
サブクラスの 1 つ:
public class SettingsLog : Log
{
}
どこが間違っていますか?
編集: このエラーを解決するにはどうすればよいですか? 適切な get メソッドがあるので、どうすれば修正できるのかわかりませんか?