gpt4 book ai didi

c# - 使用 dbcontext 的正确方法(全局或作为参数传递?)

转载 作者:太空狗 更新时间:2023-10-29 17:49:18 29 4
gpt4 key购买 nike

当我调用需要 dbcontext 的方法进行 updateinsert 时但只想要一个 saveChange() 如下所示

操作:登录

        TempDBEntity context = new TempDBEntity();
var temp = context.Users.Where(m => m.user_unique_id == 1).FirstOrDefault();
temp.timestamp = new DateTime();
temp.AddLog("Login");
context.SaveChanges();

函数:添加日志

public void AddLog(string activity){
TempDBEntity context2 = new TempDBEntity();
var log = new UserLog();
log.user_id = this.user_id;
log.activity = activity;
context2.UserLog.Add(log);
context2.SaveChanges();
}

如您所见,有两个 SaveChanges(),我只需要 1 个 SaveChanges()

我是否应该将 DBContext 作为 AddLog() 的另一个参数传递在这种情况下,还是应该为 dbcontext 声明静态变量?

非常感谢。

最佳答案

在你的情况下,我会在你需要的方法中创建一个新的 dabtase 上下文,因为这是最简单的方法,你可以很好地重用你的方法。

这应该不会造成很多性能问题,因为 Entity Framework 在数据库上下文中缓存所有重要信息,因此创建一个新的非常快。

如果您想优化交易量,那么我会编写一种处理程序,它实现自己的 SaveChanges 方法并为每个实例保留一个数据库上下文。比您多了一个抽象层和一个不错的 API 供以后使用。

这是一个简单的例子:

class UserLogin
{
private TempDBEntity dbContex;

UserLogin()
{
// ctor create dbContext
}

void Login()
{
// Login...
}

void AddLog()
{
// ...
}

void SaveChanges()
{
//dbContext.SaveChanges()...
}
}

在我看来,将 dbcontext 作为参数传递并不是一个很好的解决方案。但这是基于意见的...

关于c# - 使用 dbcontext 的正确方法(全局或作为参数传递?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32472159/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com