1

Entity Framework Model First を使用してリポジトリと作業単位のパターンを解決しようとしているときに、懸念事項の分離の問題を思いつきました。私のソリューションには、データ、ドメイン、リポジトリ、コンソールの 4 つのプロジェクトがあります。私のデータ層には、EF、edmx ファイルがあります。ドメイン層にはオブジェクトがあり、リポジトリ層にはリポジトリ インターフェイスと UOW クラスがあります。コンソールレイヤーでは、画面に名前を書き込もうとしています。しかし、画面に名前を書き込むには、EF dll をコンソール プロジェクトに追加し、データベース接続文字列を app.config に書き込む必要があります。しかし、これは懸念の分離のために間違っていると思います。コンソール プロジェクトは EF について認識してはならず、Unit of Work(UOW) クラスを使用するために Repo レイヤーとのみ通信する必要があります。

これが私の構造です:

ここに画像の説明を入力

2 つのプロジェクトは EF dll を使用します。

ここに画像の説明を入力

私の単純なコンソールアプリの参照(これは私が望む方法であり、レポレイヤーとドミアンレイヤーのみを使用します)

ここに画像の説明を入力

私のコンソールコードは次のとおりです。

ここに画像の説明を入力

ここで、EF をプロジェクトに追加し、接続文字列をプロジェクトに追加しない限り、コンソール コードは機能しません。私は何を間違っていますか?app.configいくつかの github プロジェクトを調べたところ、接続文字列が含まれていない単純な解決策が見つかりませんでした。web.config

4

1 に答える 1

0

接続文字列の依存関係は、関心の分離に違反しているとは思いません。開始プロジェクト 環境を知っている。しかし:

接続文字列を避けたい場合は、接続情報を渡すコンテキストを作成できます

public class MyContext : DbContext
public MyContext(DbConnection dbConnection, bool contextOwnsConnection)
        : base(dbConnection, contextOwnsConnection) 

また、ロードできるように参照されているパッケージとして EF があります。

 <package id="EntityFramework" version="6.0.1" targetFramework="net45" />

しかし、Resharperで確認しました。安全に削除できます。だから私はEFへのコード参照を持っていません。単なる環境負荷/パッケージ参照。

コードの分離を壊さない ドメイン駆動型開発のパラダイム

于 2013-11-13T13:20:48.183 に答える