在多个方法中使用相同的dbcontext

时间:2017-06-16 09:49:58

标签: c# entity-framework design-patterns singleton dbcontext

我遇到了问题,我会在多种方法中使用相同的dbContext,例如:

public class Communication
{
   public Response AddCommunication(Commnucation myComm)
   {
      using(MYDB dbContenxt = new MYDB())
       {
           DBCOMMUNICATION dbComm = new DBCOMMUNICATION
           {
               ID = myComm.Id,
               NAME = myComm.Name,
               SUBJECT = myComm.Subject,
               MESSAGE = myComm.Message
           };

           if(myComm.Images != null && myComm.Images.Count > 0)
           {
               foreach(var image in Images)
               {
                   IMAGES dbImages = new IMAGES
                   {
                       ID_COMMUNICATION = myComm.Id,
                       NAME = image.Name,
                       VALUE = image.Value
                   };
                   dbContext.IMAGES.add(dbImages);
               }
           }

           if(myComm.Attachments != null && myComm.Attachments.Count > 0)
           {
               foreach(var image in Images)
               {
                   same work .......
                }
           }
        dbContext.SaveChanges();    
       }
      .......
      .......
    }
}

我会提取使用foreach循环的方法,例如:

 if(myComm.Images != null && myComm.Images.Count > 0)
       {
            AddImages(myComm);
       }

在AddImages方法中,我将使用相同的dbContext进行添加,但仅在AddCommunication中使用SaveChanges。 这是最好的做法?对dbContext使用Singleton模式?请帮我。谢谢,抱歉我的英语不好。

1 个答案:

答案 0 :(得分:0)

将dbContext传递给新方法

if(myComm.Images != null && myComm.Images.Count > 0)
{
   AddImages(dbContext, myComm);
}

...

private void AddImages(MYDB dbContext,Commnucation myComm)
{
   ...
}