【发布时间】:2019-08-07 16:58:50
【问题描述】:
所以我有一个方法变得相当长,想把它扩展一下。从我想要分支的方法中,我想调用另一个方法并在那里完成涉及一些查找等的工作以及添加新实体。将 DbContext 从主要方法传递给其他方法的最佳方法是什么?参考还是不参考?
操作:登录
MyLogCtx ctx = new MyLogCtx()
var temp = context.Users.Where(m => m.user_unique_id ==1).FirstOrDefault();
temp.timestamp = new DateTime();
temp.AddLog("Login", ctx);
功能:添加日志
// should I mark MyLogCtx as ref?
public void AddLog(string activity, MyLogCtx context)
{
// want to add new log but in the original context, use ref?
var log = new UserLog();
log.user_id = this.user_id;
log.activity = activity;
context.UserLog.Add(log);
context.SaveChanges();
}
【问题讨论】:
-
如果你在一个类中,你可以将数据上下文保存在一个私有变量中,一个类中的所有方法都可以访问它。因此,您的辅助方法可以是私有的并且位于同一个类中。如果它在不同的类中,则使用 DI 容器来实例化 DB Context 并将其注入到需要它的类中。