2009-06-09 5 views
0

私は、私たちがクライアントとして得ることができる各社のためにデータベースを利用すると書かなければならないアプリがあります。LINQとASP.NET MVCを使用して、ユーザーが関連付けられているデータベースをどのように保持しますか?

残念ながら、このアプリケーションでは、必要なすべての基本情報(たとえ列名が異なる/異なるテーブルであっても)は同じですが、すべての企業データベースのスキーマは同じではありません。私はこのインタフェースを実装する各データベース用のDALのクラスを記述しますなど

List<User> getUsers(); 
List<Account> getAccounts(); 
void UpdateAccount(Account account); 

:複数のデータベースを扱うための

私のソリューションは次のようIRepositoryインターフェースを作成することです。このクラスは、それ自身のデータベースに適切なLINQのDataContextのを使用します。

alt text

ここでは、ローズ、HomeDepot、およびFrankLumber用のフォルダを見ることができます。それぞれにIRepositoryを実装するDALクラスがあります。

私の質問は、ファクトリメソッドのインスタンス化をどこで処理すればよいのでしょうか。ログインするユーザーごとに新しいDALクラスインスタンスを保持することができます。

したがって、ログインしている顧客がRepositoryFactoryを呼び出して適切なDALを返すと、上記のメソッドを実装することがわかっているので、多態的にメソッドを呼び出すことができます。

私はASP.NET MVCとMembershipProvidersに新たなんだと、彼らは、ログインした後、私は、ユーザーごとにDALのインスタンスを永続化する方法についていくつかのヒントを使用することができます。

答えて

1

あなたにDALのインスタンスをインスタンス化することができますコントローラの動作。実際にたくさんのアクションがある場合は、DALインスタンスをアクションなどの属性(属性など)間で共有されるより良い場所に作成すると考えることができます。

ASP.NETセッション状態を維持したり、あなたが必要とするたびにデータベースのコンテキストを再作成します(毎回datacontextを閉じて、datacontextの 'using'キーワードを使用することをお勧めします)

関連する問題