NHibernate/FluentNHibernateの新機能です。 FNHを使用してコードを作成しました。使用するのが簡単です。しかし、私はNHibernateで書かれているいくつかの既存のコードベースで作業しています。今日私は、データベースが期待どおりに更新されていないコードにバグを発見しました。約30分後、新しいクラス変数を追加したにもかかわらずマッピングXMLを更新していないことがわかりました。そのため、テーブルの行は更新されませんでした。私の質問は、NHibernateでこのような不完全なマッピングを簡単に識別して、何かがうまくいかないときにマッピングを手動でチェックする必要がないようにする方法があるかどうかです。つまり、マッピングされていないフィールドのデフォルト以外のデータを持つオブジェクトを更新する場合の警告メッセージですか?NHibernateの不完全なマッピングを防ぐ方法
答えて
はFluentNHibernateでPersistenceSpecificationクラスを見てみましょう:http://wiki.fluentnhibernate.org/Persistence_specification_testing
それはあなたのシステムのために理にかなっている場合は、すべてのプロパティをテストするためにリフレクションを使用して、これを包むことができます。
また、NHibernateマッピングメタデータを使用して、UnitTestでリフレクションによってマップされていないプロパティを検索することもできます。
Metatdataを使用すると、流暢なnhibernateやその他の手段を使ってnhibernateマッピングを作成している場合は、アプリケーションにとって透過的です。
UnitTestsでマッピングをテストすると、アプリケーションの起動時ではなく、テスト時にマッピングが正常であることがわかります。
This questionと関連があり、this shows how to query the metadataと思われる。
+1私は単体テストのこのスタイルを書いています(これは正確ではありませんが)。 – Bevan
データベースが更新されなかったバグは、マップされていないフィールド/プロパティ以外の問題が原因です。反射を使用してキャッチすることは不可能な他のマッピングミスがあるかもしれません。間違ったカスケードや間違ったジェネレータを使用した場合はどうなりますかまたは、関連付けのマッピングを忘れましたか?
マッピングの問題の大部分を把握したい場合は、実メモリまたはメモリ内のデータベースに対して実行される統合テストを作成する必要があります。このアプローチの概要はhereです。
- 1. 完全なテーブルスキャンの簡単なクエリを防ぐ
- 2. 不完全なalembic runのクリーンアップ方法
- 3. バベルトランス不完全不完全?
- 4. YAMLException:不完全な明示的なマッピングのペア
- 5. XSSの不正な形式のタグを防ぐ方法
- 6. Qt5 QML Slider不正な初期値を防ぐ方法
- 7. PHP:不要な改行を防ぐ方法
- 8. ajaxリクエストでPHPの実行を完全に防ぐ
- 9. 不完全なスキーマ
- 10. 不要なdbヒットを防ぐ(Kohana ORM)
- 11. divのスタイルを変更したい場合は、REACTでの完全な再レンダリングを防ぐ方法
- 12. 防ぐ特定のコマンドのマッピングnerdtree
- 13. 不完全な型のC++
- 14. Sprintの不完全なストーリー
- 15. Seleniumの不完全なスクリーンショット
- 16. TrayIconポップアップがディスパッチャスレッド全体を占めるのを防ぐ方法
- 17. リフレッシュ後のng-admin全体のリロードを防ぐ方法
- 18. .NET MVC/JS/JQUERYのクイズアプリケーション、不正行為を防ぐ方法は?
- 19. Grailsコントローラのマッピング、完全な誤解
- 20. UITableView numberOfRowsInSection - 完全な/不完全なタスクを表示
- 21. スレッドスターベートを防ぐ方法
- 22. セッションを防ぐ方法
- 23. セッションタイムアウトを防ぐ方法
- 24. HSTSを防ぐ方法は?
- 25. Ajaxキャッシングを防ぐ方法
- 26. enumコンストラクタを防ぐ方法
- 27. 不完全なフォームプロンプト - Android
- 28. 不完全な型::マップ
- 29. 不完全なファイルコピーJava NIO
- 30. エラー:不完全なテンプレートタイプ
新しいユニットテストを実装しますか? – Rippo