私はFluent NHibernateの慣習のセットを持っています。ほとんどのものはデータベースに依存しません。しかし、文字列プロパティのために、このような1依存DBMSあるカップルがあります:Fluent NHibernateのDB固有の規約
Public Sub Apply(ByVal instance As IPropertyInstance) Implements IConvention(Of IPropertyInspector, IPropertyInstance).Apply
instance.CustomSqlType("VARCHAR2(50 BYTE)")
End Sub
本当に私は、DBの世代のためにこの1(すなわち、最初の開発オブジェクト)のような規則を使用します。これはすべてうまくいっていますが、Oracleにはうまくいきますが、メモリ内のSQLite DBを使って単体テストを行いたいのですが、SQLiteにはVARCHAR2型がないため、このコンベンションは動作しません。
このような状況でFluent NHibernateをどのように設定するかについてのアドバイスや参考資料はありませんか?
現時点では、データベースに依存せず、サブディレクトリ/名前空間に従属する規則を持つ一般的な一連の規則を考えています。次に、特定のDBMSに関連付けられているものと同様に、すべての一般的な慣習を取り上げるカスタムITypeSourceコンポーネントを指定できるような設定をします。 SqlConventionTypeSource、OracleConventionTypeSource ...
親切に、 ライアン。
応答に感謝します。 –
FYI; Windsor IoCでNHibernateを設定するには、Castle.Facilities.NHibernateIntegrationライブラリを使用します。このようにして、NHibernateを使用するすべてのサービス/プレゼンターは、必須/オプションのクラス依存としてISessionManagerを使用して作成できます。私がサービスを解決すると、WindsorはISessionManagerの具体的な実装を注入します。基本的には、この機能を使用してセッション管理(セッションごとのオープンセッションなど)について心配する必要はあまりありません.ISessionManagerを巧みに使って単体テストを行うことができます。 –
機能IConfigurationBuilderインターフェイスを介してセッションファクトリのデフォルト設定を変更することができます。ここでは、NHibernateセッションファクトリを流行のある自動マッピングを使って流暢に設定します。私はFNHのAutoPersistenceModelにどこで慣習を見つけるべきかを伝える必要があります。これはかなり複雑で、明確に定義されており、変更することはないと考えられるので、再利用の良い候補です。これは私の慣習のうちのいくつかがDB特有のもの(すなわち、スキーマを生成するために使用されるもの)であるという私の元の問題に戻る。 –