当一种方法" 需要"时,我不确定处理DbContext
的最佳方式2个DbContext
个对象。我有用于执行常规CRUD操作的类,并且在每次插入/编辑之后,我记录所做的更改 - 使用Log_History
实体。我没有在多个类中复制相同的代码,而是创建了一个用于添加新Log_History
实体的公共静态方法。
我最初的想法是,这不是一个好主意。使用2个DbContext
对象会出现并发问题吗?我不确定我是否理解正确,但是this问题得到了多个上下文可以回答的响应。如何将DbContext
作为CreateOrder()
的{{1}}传递给AddHistoryNote()
。那会是一种可接受的方法吗?
public class Log
{
public static void AddHistoryNote(Guid UserId, string Type, string Detail)
{
using (rsContext repo = new rsContext()) {
Log_History trans = new Log_History {
UserId = UserId,
Description = Type,
Detail = Detail,
HistoryDate = DateTime.Now
};
repo.Log_History.Add(trans);
repo.SaveChanges();
}
}
}
public class DoStuff
{
private void CreateOrder(BT.TransactionInfo TransDetails)
{
using (rsContext repo = new rsContext()) {
rsDataAccess.Order newOrder = new rsDataAccess.Order {
Amount = TransDetails.Amount,
OrderDate = DateTime.Now,
Status = Status.RIDER_PAID,
RequestId = TransDetails.RequestId
};
' Add hisotry here
Log.AddHistoryNote(TransDetails.UserId, "TransactionType", "My history note");
repo.Orders.Add(newOrder);
repo.SaveChanges();
}
}
}
答案 0 :(得分:0)
我不确定你认为这里有什么问题,但没有。
调用这样的静态方法没有并发问题。您的DbContext本身不是静态的(如果是,那将是一个问题)并且您正在新建一个实例。
这并不是说我会建议这样做,但这不会是一个错误。