1. ホーム
  2. c#

[解決済み] NHibernate.MappingException: No persister for: XYZ

2022-02-14 23:45:57

質問

さて、その前に。I した Googleと私の hbm.xml ファイル エンベデッドリソース

以下は、私が呼び出しているコードです。

ISession session = GetCurrentSession();
var returnObject =  session.Get<T>(Id);

以下は、このクラスに対する私のマッピングファイルです。

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="HQData.Objects.SubCategory, HQData" table="SubCategory" lazy="true">
    <id name="ID" column="ID" unsaved-value="0">
      <generator class="identity" />
    </id>

    <property name="Name" column="Name" />
    <property name="NumberOfBuckets" column="NumberOfBuckets"  />
    <property name="SearchCriteriaOne" column="SearchCriteriaOne" />

    <bag name="_Businesses" cascade="all">
      <key column="SubCategoryId"/>
      <one-to-many 
         class="HQData.Objects.Business, HQData"/>
    </bag>

    <bag name="_Buckets" cascade="all">
      <key column="SubCategoryId"/>
      <one-to-many
         class="HQData.Objects.Bucket, HQData"/>
    </bag>

  </class>
</hibernate-mapping>

この問題に遭遇したことのある方はいらっしゃいますか?

以下はエラーメッセージの全文です。

<ブロッククオート
MappingException: No persister for:  HQData.Objects.SubCategory]NHibernate.Impl.SessionFactoryImpl.GetEntityPersister(String entityName, Boolean throwIfNotFound) に対応するパーシスタがありません。
 in c:\CSharpNH2.0.0 paragraph nhibernate in c:\CSharpNH2.0.0 ㊦NHibernateImpl㊦SessionFactoryImpl.cs:752 NHibernate.Event.Default.DefaultLoadEventListener.OnLoad(LoadEvent event, LoadType loadType)
 in c:\CSharpNH2.0.0 ⑷NHibernate⑷DefaultLoadEventListener.cs:37 NHibernate.Impl.SessionImpl.FireLoad(LoadEvent event, LoadType loadType)
 in c:\CSharpNH2.0.0 ㊦NHibernate㊨SessionImpl.cs:2054 NHibernate.Impl.SessionImpl.Get(String entityName, Object id)
 in c:\CSharpNH2.0.0 ànhibernatesrc ⑭NHibernate⑯SessionImpl.cs:1029 NHibernate.Impl.SessionImpl.Get(Type entityClass, Object id)
 in c:\CSharpNH2.0.0 ⑷src⑸NHibernate⑸SessionImpl.cs:1020 NHibernate.Impl.SessionImpl.Get(Object id)
 in c:\Data.DataAccessUtils.NHibernateImplSessionImpl.cs:985 HQData.DataAccessUtils.NHibernateObjectHelper.LoadDataObject(Int32 Id)
 in C:De \DevelopmentChannelRepo NeitherHQ Channel Application
 in C:De \DevelopmentChannelRepo 106.cs:17 HQWebsite.LocalSearch.Page_Load(Object sender, EventArgs e)
 in C:De \DevelopmentChannelRepo コールバック(Object sender, EventArgs e) +33 System.Web.UI.Control.OnLoad(EventArgs e) +99 System.Web.UI.Control.LoadRecursive() +47 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1436

更新 に対する解決策は以下の通りです。 私の のシナリオでした。私はいくつかのコードを変更し、私は実行時に設定ファイルにアセンブリを追加していませんでした。

解決方法は?

セッションファクトリ構成にマッピングアセンブリを追加するのを忘れているようです。

app.configを使用している場合...

.
.
    <property name="show_sql">true</property>
    <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
    <mapping assembly="Project.DomainModel"/>  <!-- Here -->
</session-factory>
.
.