NHibernateを使用してコードベースを修正しています。GetやLoadを使用してIDでエンティティを検索する代わりに、クエリを使用していました。Nhibernate GetとLoad
評価:propertyNameValuesが "ID" とID値を含むIDictionnaryある
session.CreateCriteria(typeof(T)).Add(Expression.AllEq(propertyNameValues)).List<T>();
。交換しようと
:
session.Get<T>(id);
NHibernateのではありません存続は私のクラスが見つかりスローされます。
しかし、最初の方法としては明らかに1つの方法があります。私のgoogle-fuは、指定されたhbmを組み込みressourcesに設定することを忘れていたリンクや、nhibernate設定のマッピングアセンブリを見つけました。
Get(id)、Get(typeof(T)、id)、Get( "ClassName"、id)はすべて同じエラーをスローしました。ここで
要求されるようにマッピングされる(ありがとう)
<class name="Domain.Customers.Customer, Domain" table="Customer" lazy ="true">
<id name="ID" column="id" access="field.lowercase-underscore" type="int">
<generator class="identity" />
</id>
これは、1つのクラスのマッピングですが、それはすべて私のentititesのための一般的なのです。
ありがとうございます。
あなたの質問を更新していただきありがとうございます。私はそれに応じて私の投稿を編集しました。 –
これはもっと良いですか? –
これは、リフレクションを介してこのメソッドを呼び出すという事実に関連しており、Genericクラスにあります。だから私は、ほとんどの場所でそれを間違った方法と呼ぶことにし、それが頻繁に呼び出されるクラスの基本メソッドを単にオーバーライドすることに決めました。ありがとう! – pmlarocque