2017-06-16 36 views
0

我有一個問題,我會用同樣的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

我讀過關於不是很好的做法的stackoverflow,因爲性能方面的原因 – pampua84

+0

因爲性能原因,它不會壞,因爲它不會以任何方式影響性能。你現在只是做同樣的事情,但將部分功能提取到不同的方法。你不是在創造新的背景或類似的東西。 – Evk

回答

0

只是傳遞的DbContext到新方法

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

... 

private void AddImages(MYDB dbContext,Commnucation myComm) 
{ 
    ... 
} 
相關問題