2012-02-13 9 views
2

NHibernate/FluentNHibernateの新機能です。 FNHを使用してコードを作成しました。使用するのが簡単です。しかし、私はNHibernateで書かれているいくつかの既存のコードベースで作業しています。今日私は、データベースが期待どおりに更新されていないコードにバグを発見しました。約30分後、新しいクラス変数を追加したにもかかわらずマッピングXMLを更新していないことがわかりました。そのため、テーブルの行は更新されませんでした。私の質問は、NHibernateでこのような不完全なマッピングを簡単に識別して、何かがうまくいかないときにマッピングを手動でチェックする必要がないようにする方法があるかどうかです。つまり、マッピングされていないフィールドのデフォルト以外のデータを持つオブジェクトを更新する場合の警告メッセージですか?NHibernateの不完全なマッピングを防ぐ方法

+1

新しいユニットテストを実装しますか? – Rippo

答えて

3

はFluentNHibernateでPersistenceSpecificationクラスを見てみましょう:http://wiki.fluentnhibernate.org/Persistence_specification_testing

それはあなたのシステムのために理にかなっている場合は、すべてのプロパティをテストするためにリフレクションを使用して、これを包むことができます。

1

また、NHibernateマッピングメタデータを使用して、UnitTestでリフレクションによってマップされていないプロパティを検索することもできます。

Metatdataを使用すると、流暢なnhibernateやその他の手段を使ってnhibernateマッピングを作成している場合は、アプリケーションにとって透過的です。

UnitTestsでマッピングをテストすると、アプリケーションの起動時ではなく、テスト時にマッピングが正常であることがわかります。

This questionと関連があり、this shows how to query the metadataと思われる。

+0

+1私は単体テストのこのスタイルを書いています(これは正確ではありませんが)。 – Bevan

0

データベースが更新されなかったバグは、マップされていないフィールド/プロパティ以外の問題が原因です。反射を使用してキャッチすることは不可能な他のマッピングミスがあるかもしれません。間違ったカスケードや間違ったジェネレータを使用した場合はどうなりますかまたは、関連付けのマッピングを忘れましたか?

マッピングの問題の大部分を把握したい場合は、実メモリまたはメモリ内のデータベースに対して実行される統合テストを作成する必要があります。このアプローチの概要はhereです。

関連する問題