2010-12-30 17 views
2

複数のプロジェクトを持つVisual Studioソリューションがあります。モデルとリポジトリを別々のプロジェクトに保存する

私は100%プロジェクトの構造とそのメリットについて決済していません。

例:DOMAINというプロジェクトがあります。ここに私のようないくつかのフォルダを持っている:

DOMAIN 
| 
|_Repository 
    |__Implementations 
    |____|__OrderRepository.cs 
    |____|__CustomerRepository.cs 
    |__Contracts 
    |____|__IOrderRepository.cs 
    |____|__ICustomerRepository.cs 
    SessionManager.cs 
    Model 
    |__Customer.cs 
    |__Order.cs 

QUESTION:モデルは、余分なプロジェクトにリポジトリから分離されるべきか?

「はい」の場合、WHY?

答えて

3

あなたのアプリケーションがストレージ・アジノスティックであるように努力している場合は、はいです。これを行う1つの方法は、抽象クラスやインタフェースなど、リポジトリの抽象概念をモデルに含めることです。次に、データアクセスレイヤー(DAL)のようなものを呼び出すことができる別のプロジェクトがあり、モデルプロジェクトへの参照を保持し、抽象リポジトリを実装します。

この利点は、プロジェクト間の責任をより明確に分けることです(モデルプロジェクトでビジネスロジックが実装され、DALプロジェクトにデータの取得方法に関する詳細が分かっているなど)。さらに、これにより、2つの異なるDALを実装することができます.1つはSQLServer、もう1つはSqlLiteです。

+0

は非常に似たものを投稿しようとしていました+1 – tQuarella

+0

ok私はsqliteのDALでプロジェクトをスワップし、sqlserverdalを使用することができます。したがって、私はそれを解決策としてマークしましたが、Entity FrameworkのようなORMツールを使用すると、あなたのアドバイスは正しく理解できません。私はLINQプロバイダを介してコンテキストを照会し、これはsqlite/sqlserver/mysqlなどとすることができます。 – Elisabeth

+0

argh ...私は重要な誤植を持っていました。私は既に2つのプロジェクトを持っていますが、DALは実装+契約を持っています。モデルはエンティティを持っています...学習効果のために大丈夫です。私はインプラントを何とか保つのが好きですが、MODELへインターフェイスを移動します;-) – Elisabeth

関連する問題