使用相同的DbContext在多个方法

问题描述:

我有一个问题,我会用同样的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使用单例模式?请帮帮我。谢谢并为我的英语不好而感到抱歉。

+1

通行证的DbContext作为参数传递给该新方法(AddImages)。 – Evk

+0

我读过关于不是很好的做法的*,因为性能方面的原因 – pampua84

+0

因为性能原因,它不会坏,因为它不会以任何方式影响性能。你现在只是做同样的事情,但将部分功能提取到不同的方法。你不是在创造新的背景或类似的东西。 – Evk

只是传递的DbContext到新方法

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

... 

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