1

条件を作成するときに、プロパティに適用される制限を追加できます。制限を作成するには、次の 2 つの方法があります。

Restrictions.Eq(string propertyName, object value)
また
Restrictions.Eq(IProjection projection, object value)

つまり、プロパティ名を文字列として渡すのは苦手です。プロパティ名が変更された場合、プロジェクトは通常どおりコンパイルされ、名前の不一致は単体テスト中にのみ検出されるためです。私は TDD を実装しようとしていますが、すぐには実装されないので、ユニット テストの依存関係を制限してエラーをチェックしようとしています (TDD を採用できるようになるまで)。

何か案は?前もって感謝します!

4

3 に答える 3

4

LINQ、QueryOver (NH3.x)、NH Lambda 拡張機能(NH2.x)、またはNHibernate Expression Extensions (NH1.2)を使用する

これらはすべて、単に文字列を使用するよりも厳密に型指定されています。

于 2010-08-31T21:39:02.067 に答える
0

単体テストを完全にカバーしている限り (そうではありませんか?)、問題にはならないはずです:-)?

プロパティ名に文字列を使用しないようにするもう 1 つの理由は、Resharper などを使用したリファクタリングではこれらの参照を修正できないことです。これは、Fluent NHibernate が真価を発揮するところです。

于 2010-09-01T06:49:18.043 に答える
0

私はあなたの痛みを感じることができます。

ただし、nHibernate マッピングでテーブルまたは列名の変更を検出できないように、Criteria API でプロジェクションを使用してプロパティへの動的参照を配置する方法はありません。

ほとんどの場合、「プロパティ」を使用して段階的に検索と置換を行うとうまくいきます。

于 2010-08-31T21:41:00.707 に答える