C# 如何在多个类中实现dbContext
当一个方法“需要”2C# 如何在多个类中实现dbContext,c#,asp.net,entity-framework,entity-framework-4,dbcontext,C#,Asp.net,Entity Framework,Entity Framework 4,Dbcontext,当一个方法“需要”2DbContext对象时,我不确定处理DbContext的最佳方法。我有一些类执行正常的CRUD操作,在每次插入/编辑之后,我使用log\u History实体记录所做的更改。我没有在多个类中复制相同的代码,而是创建了一个公共静态方法来添加一个新的Log\u History实体 我最初的想法是这不是个好主意。使用2DbContext对象是否会出现并发问题?我不确定我是否理解正确,但问题得到的回答是多个上下文都可以。在CreateOrder()中将我的DbContext作为Ad
DbContext
对象时,我不确定处理DbContext
的最佳方法。我有一些类执行正常的CRUD操作,在每次插入/编辑之后,我使用log\u History
实体记录所做的更改。我没有在多个类中复制相同的代码,而是创建了一个公共静态方法来添加一个新的Log\u History
实体
我最初的想法是这不是个好主意。使用2DbContext
对象是否会出现并发问题?我不确定我是否理解正确,但问题得到的回答是多个上下文都可以。在CreateOrder()
中将我的DbContext
作为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();
}
}
}
我不确定你认为这里有什么问题,但什么都没有 调用这样的静态方法不存在并发性问题。DbContext本身不是静态的(如果是静态的,那将是一个问题),您正在创建一个新实例
这并不是说我会建议这样做,但这不会是一个错误。您不能将DBContext作为参数传入并从那里使用它吗?这就是我所说的“将DBContext作为AddHistoryNote()的参数传入CreateOrder()中”的意思。我知道这会起作用,但我需要一些保证,这将是一个有效的方法。对不起:)是的,在这种情况下,我看不出有什么问题。它还允许你管理交易。你会推荐什么,或者为什么不推荐它?@KRob-我不会推荐它,因为它没有必要。我可能会将其实现为DbContext上的C#扩展方法,或者DbContext的方法。