私たちのチームはNetTierを使用していましたが、これは有用であるとわかりました。しかし、私たちがそれを使用するほど、頭痛や痛みのある箇所が増えました。
- 再生成する3つの別々のプロジェクトで何千行ものコードを
- 再生成する何百もの:たとえば、いつでもあなたは、データベースへの変更を行うには、関連するCodeSmithと再生成DALする必要がストアドプロシージャの例
多分、他の方法がありますが、これは私たちがしなければならないことです。ソースコードの再作成はOK、恐ろしいですが、大丈夫でした。実際の問題はストアドプロシージャで発生しました。使用されていないストアドプロシージャは削除されませんでした。そのため、スキーマからテーブルを削除してDALを再生成した場合、そのテーブルのストアドプロシージャは削除されませんでした。また、これは、古いデータベース構造を新しいデータベース構造と比較して、クライアントインストールを更新するための変更スクリプトを作成する必要があったデータベース変更スクリプトの頭痛になりました。このスクリプトは何万行ものSQLコードに実行される可能性があり、実行中の問題があった場合は常にそれが解決されていました。
そして、光が来て、NHibernateがORMとして来ました。それは確かにそれにランプアップ時間がありますが、それは十分な価値があります。それにはたくさんのサポートがあります。あなたが何か必要なことがあれば、これまで以上に多くのことが行われています。それは非常に柔軟性があり、あなたはそれのすべての側面を制御することができます。また、使いやすくなっています。 Fluent Nhibernateは、必要とされているXMLマッピングファイルを取り除くための優れた方法です。NHibernate Profilerは、効率を高め冗長性を取り除くために何が起こっているのかを見るための優れたインタフェースを提供します。
NetTiersからNHibernateへの移行は苦労しましたが、良い方法です。これにより、私たちはより良いアーキテクチャに移行し、機能的なニーズを再評価しなければなりませんでした。 NetTierは、大量のデータアクセスコードを提供し、そのIDでこのエンティティを取得し、その外部キーによってこの他のエンティティを取得し、これとtlistとvlistを取得しますが、そのほとんどは不要で未使用でした。ジェネリックリポジトリとカスタムリポジトリを必要とする場合にのみ、NHibernateは未使用コードの量を減らし、本当に可読性と信頼性を向上させました。
「データベースへの実際のアクションが遅い」という経験はどうでしたか?あなたはあなたが行ったパフォーマンステストの説明を書いて、人々があなたがそれを作り上げているだけではないことを知るようにすべきです。 – liammclennan