2017-07-03 7 views
1

dapperとリポジトリパターンを使用しています。以下は、単一リポジトリ挿入用のコードです。私はトランザクションを持つサービス層で2つ以上のリポジトリを呼び出す必要があります(savecustomerメソッドで)。以下の方法でトランザクションを適用する方法は?あなたがリポジトリ外で取引を延長したい場合は、UnitOfWorkのを使用してご検討くださいデリゲートメソッドの大まかなトランザクション

public void SaveCustomer(CustomerDTO custDTO) 
{ 
    Execute(db => db.Execute(saveCustSp, custDTO, CommandType.StoredProcedure)); 
} 
+0

はい、しかし、私は同じ方法でトランザクションを使用する必要があります..私はすでに質問に記載されています..pls重複を削除 – Ljt

答えて

1

Protected void Execute(Action<IDbConnection> query) { 
     using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["myDB"].ConnectionString)) 
     { 
      query.Invoke(db); 
     } 
    } 

そして、私の単純化された呼び出しサイト。詳細なコードはここで見つけることができます。このコードでhttps://stackoverflow.com/a/45029588/5779732

は、あなたが以下のように複数のリポジトリ間でのトランザクションにまたがることができます。

using(DalSession dalSession = new DalSession()) 
{ 
    UnitOfWork unitOfWork = dalSession.UnitOfWork; 
    unitOfWork.Begin(); 
    try 
    { 
     //Your database code here 
     repository1.DoThis(); 
     repository2.DoThat(); 

     unitOfWork.Commit(); 
    } 
    catch 
    { 
     unitOfWork.Rollback(); 
     throw; 
    } 
} 

また、ここではDapperのと、一般的なリポジトリのためのサンプル・コードを取得することができます。https://stackoverflow.com/a/45460483/5779732

+0

あなたの詳細な説明のための@amitありがとう..私はチェックします...それは使用することが可能ですNETコアで同じメソッド? – Ljt

+0

リポジトリクラスのサンプルを提供できますか? – Ljt

+0

私はすでにリポジトリを作成していると思います。 UoWを受け入れるように修正する必要があります。リポジトリを含めるために私は**リンク**の回答を更新しました。 –

関連する問題