2

私はMVCの世界で始めたばかりで、VS 2010に組み込まれている標準のMVCテンプレートを使用しました。いくつかのコントローラーとビューが接続されているので、データベースにアクセスする必要があります。

非常に大規模な既存のSQLServer2005データベースがあり、すでにサードパーティの会社によって定義されています。私は、特定の会社のニーズに合わせて、レポート/管理インターフェイスを追加しようとしています。

ですから、最初は、このDBのいくつかのテーブルからリストを取得したいと思います。それで...MVC3を使用して、うまく統合するいくつかのORMツールは何ですか?

また、テストドライブ設計アプローチを使用しようとしています。データの挿入/更新/削除が必要なテストをどうすればよいかわかりません。それが「モック」の登場でしたか?

4

2 に答える 2

4

すべてのORMはAsp.netMVCとうまく統合されています。asp.net mvcには、ORM統合を困難にするものは何もありません。

最大のハードルは、レガシーデータベースを使用することです。NHibernateとEntityFramework4は、レガシーデータベースへのマッピングをよく知っている2つの無料のORMだけです。EF4は、レガシーデータベースへのマッピングにそれほど悪くはありませんが、グリーンフィールド開発でうまく機能します。対照的に、NHibernateは考えられるほとんどすべてのシナリオをマッピングできます。

テストの容易さは、使用するデータアクセスパターンに大きく依存します。リポジトリパターンは、テストが非常に簡単なため人気があります。モックは必要ありません。

于 2011-02-07T19:27:07.473 に答える
1

Castleコンポーネント(Windsor、Dynamic Proxy、Active Record)を使用することを強くお勧めします。Active Recordは、手動またはDynamic Proxyのインターセプターを介してデータを操作できる属性を持つモデルを作成するため、基本的にデータをモックすることができます。リポジトリとデータサービスをまとめて、データアクセスをより細かく制御します。柔軟なクエリを簡単に実行できるように、該当する場合は指定パターン
を使用してください。 データサービスでLinqwithActive Recordを使用して、仕様(NHibernateの抽象基準をラップして、またはに変換する場合としない場合があります。または、HQLまたはカプセル化するものを含む場合があります)をクエリとして渡すことができます。
IEnumerable<T>DetachedCriteriaDetachedCriteria
そうすれば、データベースアクセスを簡単にモックし、リファクタリングとテストをより簡単に行うことができます。

于 2011-02-07T17:31:33.887 に答える