これは簡単に見つかると思っていましたが、問題が発生しています。ID フィールドを持つ EntityBase というクラスから継承するクラスがあります。基本クラスは次のようになります。
//Here is the declaration
public abstract class EntityBase<IdType>
//here is the property
private IdType _id;
public virtual IdType ID
{
get
{
return _id;
}
set
{
_id = value;
}
}
これはほとんどのエンティティで正常に機能しますが、別の DB で実行されるストアド プロシージャから実際に構築されるエンティティがあり、問題は DB とは異なり、「ID」ではなく「ID」を返します。これをオーバーライドするためにいくつかのことを試しました。 IDを設定しましたが、次のエラーが発生し続けます
NHibernate.PropertyNotFoundException: クラスでプロパティ 'Id' のセッターが見つかりませんでした
public class ListingMapping : IAutoMappingOverride<Listing>
{
public void Override(AutoMapping<Listing> mapping)
{
mapping.Map(x => x.ID).Column("Id");
mapping.Id(x => x.ID).Column("Id");
}
}
エンティティの作成方法は次のとおりです。
public Listing GetListingById(Guid ListingId)
{
IQuery query = GetSession().GetNamedQuery("GetListingById")
.SetParameter("ListingId", ListingId)
.SetResultTransformer(Transformers.AliasToBean<Listing>());
return (query.UniqueResult<Listing>());
}
スキームをオーバーライドする他のタイプで機能するため、自動マッピングがロードされていることはわかっています。うまくいけば、それで十分な情報であり、誰かが私を正しい方向に向けることができます.