2016-03-24 12 views
1

私はasp.net mvc-4 Webアプリケーションで作業していますが、私はエンティティフレームワーク5.0を使用しています。 .edmxファイルとDBContextクラスを生成したado.netエンティティフレームワークを使用してデータベーステーブルをマップしました。次のように、私は直接データベース・エンティティと対話リポジトリモデルクラスを持っているasp.net mvcは、別のDBContextオブジェクト内で開始されたDBcontextオブジェクトをどのように処理するのですか?

: - - :

は、今私はasp.netのMVCは次のシナリオをどのように処理します確認していない

public class Repository 
{ 

     private MyEntities my = new MyEntities(); 
public void Save() 
     { 
      my.SaveChanges(); 
     } 

また、私は次のように、上記のリポジトリと別のAPIリポジトリクラスを開始した、以下のControllerクラスを持っている: -

 public class ServerController : Controller 
     { 
      Repository repository = new Repository(); 
      APIRepository APIrepository = new APIRepository(); 
      //code goes here 
      Public ActionResult Create(Emp e) 
      { 
       //code goes here.. 
       var result = APIreposioty.SendCall(...); 
       repository.Save(); 
      } 

APIRepositotyも開始します次のようにリポジトリ、: -

public class APIRepository 
    { 
     Repository repository = new Repository(); 

は今、私のコントローラクラスの内部で、私は以下の持っている: - レポクラスはMyEntitiesを開始

  1. それは直接リポジトリクラスを開始し、()。
  2. APIrepoクラスが開始され、そこではAPIrepoクラスがリポジトリクラスを開始します。

ここで、私はrepositoty.Save()をアクションメソッド内で呼び出しますか?それはエンティティオブジェクトをAPIリポジトリ内のレポジトリ&内に保存しますか? 2つの別々のコンテキストオブジェクトがユーザセッションによって管理されるでしょうか?彼らはお互いに干渉しないのですか?

答えて

1

コントローラが、エンティティコンテキストの別個のインスタンスを作成することになります。彼らは決して束縛されません。それらのいずれかに保存すると、追加/追加されたエンティティのみが保存されます。他のエンティティが処理したエンティティは保存されません。

あなたのケースでは、それを扱うための通常のパターンは、依存性注入を使用することです。コントローラーが(直接または他の依存関係を介して)使用するリポジトリーの数に関係なく、コントローラーごとに1つだけDBContextをインスタンス化するように構成します。

関連する問題