使用相同的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使用单例模式?请帮帮我。谢谢并为我的英语不好而感到抱歉。
答
只是传递的DbContext到新方法
if(myComm.Images != null && myComm.Images.Count > 0)
{
AddImages(dbContext, myComm);
}
...
private void AddImages(MYDB dbContext,Commnucation myComm)
{
...
}
通行证的DbContext作为参数传递给该新方法(AddImages)。 – Evk
我读过关于不是很好的做法的*,因为性能方面的原因 – pampua84
因为性能原因,它不会坏,因为它不会以任何方式影响性能。你现在只是做同样的事情,但将部分功能提取到不同的方法。你不是在创造新的背景或类似的东西。 – Evk