4

最近、 Pro ASP.NETMVCFrameworkを読み始めました。

著者は、リポジトリを作成し、インターフェースを使用して迅速な自動テストを設定することについて話します。これは素晴らしいですね。

ただし、ORMを使用してC#データアクセスクラスを自動生成する代わりに、データベース内の各テーブルのすべてのフィールドを2回宣言する必要があるという問題があります。1回は実際のデータベースで、もう1回はC#コードで宣言します。

これは素晴らしいプラクティスであり、見た目も素晴らしいTDDを可能にすることを私は理解しています。しかし、私の質問は次のとおりです。

データベースとC#コードの両方でフィールドを2回宣言する必要がある回避策はありませんか?C#コードを自動生成するものを使用することはできませんが、C#ですべてのビジネスロジックを手動で作成したり、テーブルごとにリポジトリ(および偽のロジック)を作成したりすることなく、TDDを実行できますか?

4

3 に答える 3

4

意味を理解しています。リポジトリによって取得されたと宣言しているPOCOクラスのほとんどは、ORMフレームワークによって自動生成されるクラスと非常によく似ています。したがって、これらのデータアクセスクラスをビジネスオブジェクトであるかのように再利用することは魅力的です。

しかし、私の経験では、ビジネスロジックに必要なデータがデータアクセスクラスとまったく同じになることはめったにありません。通常、データオブジェクトからのデータの特定のサブセット、またはいくつかのデータオブジェクトを結合することによって生成されたデータの組み合わせが必要です。念頭に置いているPOCOを実際に構築し、使用する予定のリポジトリメソッドを表すインターフェイスを作成するために、さらに2分を費やしても構わないと思っている場合、必要なときにコードをリファクタリングするのがはるかに簡単になることがわかります。ビジネスロジックを変更します。

于 2010-11-15T16:40:07.817 に答える
3

Entity Framework 4を使用する場合は、データベースからPOCOオブジェクトを自動的に生成できます。(リンク

次に、汎用IRepositoryとその汎用SqlRepositoryを実装できます。これにより、すべてのオブジェクトのリポジトリを作成できます。これはここで説明されています:http://msdn.microsoft.com/en-us/ff714955.aspx

これは、目的を達成するためのクリーンな方法です。データベースでオブジェクトを1回宣言するだけで、オブジェクトが自動的に生成され、リポジトリから簡単にアクセスできます(さらに、IoCと単体テストを実行できます:))

この本の第2版を読むことをお勧めします。これは純金であり、MVC2で導入された新機能で更新されてい ますhttp://www.amazon.com/ASP-NET-Framework-Second-Experts-Voice/dp/1430228865 / ref = sr_1_1?s = books&ie = UTF8&qid = 1289851862&sr = 1-1

また、現在RCに含まれているMVC3で導入された新機能についても読む必要があります(本当に便利な新しいビューエンジンがあります)http://weblogs.asp.net/scottgu/archive/2010/11/09/announcing-the -asp-net-mvc-3-release-candidate.aspx

于 2010-11-15T20:20:00.150 に答える
2

ビジネスロジックを2回宣言しているわけではありません。このビジネスロジックはインターフェイスの背後に抽象化されており、このインターフェイスの実装では、データベースへのアクセス、ファイルシステムからの読み取り、Webアドレスからの情報の集約など、好きなことを実行できます。このインターフェイスにより、コントローラとリポジトリの実装などにより、TDDが簡素化されます。コントローラーとビジネスの間の契約と考えてください。

于 2010-11-15T16:28:48.593 に答える