5

Asp.net Mvcを学習しようとしているので、 このチュートリアルを試しています。

彼らは、リポジトリパターンと、Linq to Sqlを直接呼び出すのではなく、別のデータアクセステクノロジに簡単に変更できることについて話します。

コントローラクラス内でLINQtoSQLを使用すると、将来的にデータアクセステクノロジを切り替えることが困難になります。たとえば、Microsoft LINQからSQLの使用から、データアクセステクノロジとしてのMicrosoftEntityFrameworkの使用に切り替えることができます。その場合、アプリケーション内のデータベースにアクセスするすべてのコントローラーを書き直す必要があります。

注:このチュートリアルを読む前に、インターフェースがどのように機能するかを実際に理解したことはありませんでしたが、それでも100%明確ではありません。私は今それをクラスのある種の「テンプレート」として見ています。

Linq to Sqlの使用に成功した後、これについて多くのことを読んでいるので、Ado.netEntityFrameworkを試してみるといいと思いました。リポジトリパターンを使えば簡単に切り替えられるとのことで、テストしてみようと思いました。

私の質問は、Ado.net EFに変更するにはどうすればよいですか?

これは私がすべきだと思うことです。

  • Movie.edmxファイルを追加して構成します(ムービーテーブルを追加します)。
  • IMovieRepositoryに基づいて新しいクラスを作成し、MovieEFRepositoryと呼ぶ場合があります。
  • コントローラコンストラクターのパラメーターをMovieEFRepositoryに変更します。これは私が最初に奇妙だと思うことです。チュートリアルでは、リポジトリを使用しないと、他のデータソースに変更した場合にすべてのコントローラーを変更する必要があると言われているためです。MovieRepositoryクラスを指定しているので、とにかくすべてのコントローラーを変更する必要はありませんか?
  • 私がする必要があると思う最後の調整は、ビューを変更することです。LinqtoSqlデザイナによって作成されたProductクラスを使用しているためです。これをどうやってやるのかわかりません。dbmlファイルに依存しないオブジェクトを使用する必要があったと思いますか?

Asp.net Mvcを少し単純化したビューがある場合は、ご容赦ください。私はAsp.netWeb開発に大きな関心を持っているWebデザイナーです。

4

2 に答える 2

6

それで、数日間の読書とたくさんのグーグルの後、私はそれを働かせました. 最初に、IoC (制御の反転) が実際に何を意味するのかを調べようとしました。

私が最初に見つけたサイトの 1 つは、Unity に関するスクリーンキャストがある Web サイトでした。これは、.Net の DI/IoC フレームワークです。

今見てみると、これは実際には非常に優れたスクリーンキャストであり、Unity と IoC/DI の使用がいかに簡単かを示す例です。当時、私はそれを完全に理解していなかったので、続けてグーグルを続けました.

私が何度も出くわした Web サイトの 1 つは、Martin Fowler の Web サイトでした。

コーディングの初心者である私にとって、この Web サイトは少し抽象的です。また、これは奇妙に聞こえるかもしれませんが、そのウェブサイトのフォント、行の高さ、およびタイポグラフィは本当にひどいものであり、読みにくくなっています.

アルフレド・フェルナンデスが使いやすいと言っていたので、私が次に読んだウェブサイトはウィンザー城に関するものでした。

ドキュメントはそれほど悪くはありませんでしたが、「はじめに」の基本的な例を自分の Asp.net Mvc アプリケーションに変換する際に問題がありました。また、第 2 部と第 3 部が最初から欠落していました。

この後、本当に基本的な例を見つけることができるかどうかを確認するために、さまざまなフレームワークを探し始めました。最初のスクリーンキャストをもう一度見ただけであれば、もっと早く修正できたはずですが、どういうわけか見失ってしまいました。

xml 構成ファイルに多くの問題があり、それらを機能させることができなかったようです。Windsor、Structure Map、Spring.net を試しましたが、常に xml ファイルに行き詰まりました。

そこで、Asp.net Mvc について学び始めた場所である Asp.net Mvc サイトにアクセスすることにしました。最初のスクリーンキャストと MIX09 のプレゼンテーションは非常に明確で、人々が話していることのほとんどが理解できました。Storefront アプリケーションをビルドするときに、Rob Conery による 2 番目のスクリーンキャストで行き詰まりました。リポジトリと IOC/DI についてもう少し知ったので、Rob Conery のスクリーンキャストをもう一度見始めるのは良い考えだと思いました。スクリーンキャストの 1 つで、彼はすべてのサンプルを codeplex にアップロードすることについて話しています。

codeplex に行ったところ、ダウンロードせずにソース ファイルを参照できることがわかりました。Rob Conery がリポジトリで IOC/DI をどのように処理しているかを調べてみました。したがって、彼が構造マップを使用しているのを見てうれしく思いましたが、xml 構成ファイルを使用する代わりに、すべてのインターフェイスを具象クラスに登録するブートストラップ クラスを使用していました。

私のWebアプリケーションでこれを試した後、最終的に構造マップをアプリケーションで動作させることができました(Hooray)。

また、Linq から Sql への Product クラスへの依存関係を修正する方法も教えてくれました。彼は追加のオブジェクトを作成し、Linq クエリで "select new product { }" によって呼び出されます。

うわー、この答えは私が計画したよりも少し長いですが、これがコーディングとAsp.net Mvcの初心者である私のような他の人々に役立つことを願っています.

于 2009-08-03T19:48:00.900 に答える
1

例だけに従った場合ではなく、インジェクションのためにリポジトリが分離されている可能性があります。

public MoviesController() : this(new **MovieRepository**())

IOC について読むことをお勧めします。これは簡単で非常に興味深いものです。Castle Windsor のような ioc コンテナーを使用できます。

これにより、コントローラーにはインターフェイスを持つコンストラクターが 1 つだけあり、変更する必要はありません。

エンティティを使用して、コントローラーと同じことを行い、各エンティティのインターフェイスを作成し、ioc パターンも使用できます。これにより、ioc コンテナーの構成ファイルを変更するだけで済みます。

これらのことを行わない場合、あなたの権利、あなたが言ったことをすべて変更する必要があります。

その助けを願っています!私の英語でごめんなさい!

于 2009-08-02T01:35:49.200 に答える