このことのいくつかを理解するのを手伝ってくれてありがとう:
MVC アプリケーションに 2 つのコントローラーがあるとします。1 つは営業担当者に関連するビューモデルを制御します。
それぞれに独自のリポジトリがあり、エンティティ フレームワーク (コード ファースト) を使用してデータにアクセスします。
両方のリポジトリは、依存関係の挿入を処理するように設定されていますが、適切な EF dataAccess を使用するためのデフォルトの 0 引数コンストラクターもあります。
営業担当者コントローラーは、_salesPeopleRepository.getAllSalesPeople() 関数を使用して、営業担当者のリストを返し、インデックス ビューに入力します。
セールス コントローラーは、同じリストにアクセスしてドロップダウン リストに入力する必要があります。
情報をセールス コントローラーに渡すにはいくつかの方法があります。
a) コントローラー内
db = new DataContext();
_saleRepos = new SalesRepository(db);
_salesPeople = new SalesPeopleRepository(db);
.....
modelA.SalePeopleSelectList = SelectList(_salesPeople.getAllSalesPeople(),"id","name")
b) SalesRepository 内 - EF 自体を使用:
public IEnumerable<salesPerson> getAllSalesPeople()
{
return _db.SalesPeople.ToList();
}
c) または、関数を呼び出す前に同じデータ アクセス オブジェクトをインスタンス化して注入する
public IEnumerable<salesPerson> getAllSalesPeople()
{
return (new SalesPersonRepository(_db)).getAllSalesPeople();
}
編集
答えが a) の場合、カスタム ビジネス ロジックを 1 つのリポジトリからどのように呼び出す必要がありますか。たとえば、sales に storeId があり、リポジトリは、sales に入力された storeId が salesPerson の storeId と一致することを確認します。ビジネス ロジックの目的で使用される (salesRepository 内の) salesPerson オブジェクトには、salesPerson リポジトリ経由でアクセスする必要がありますか、それとも dataContext オブジェクトから直接アクセスする必要がありますか?
あなたの考えと経験をありがとう