2

これは簡単に見つかると思っていましたが、問題が発生しています。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>());
}

スキームをオーバーライドする他のタイプで機能するため、自動マッピングがロードされていることはわかっています。うまくいけば、それで十分な情報であり、誰かが私を正しい方向に向けることができます.

4

1 に答える 1