您好我找到了包含此代码的tutorial。
var context=new ApplicationContext();
var userRepo=new Repository<User>(context);
var user =new User()
{
Username = "TestName"
};
userRepo.Add(user);
context.SaveChanges();
userRepo
有一个名为_context
的私有变量,因此调用context.SaveChanges()
意味着上下文是通过Repository构造函数中的引用传递的吗?为什么我们不公开_context
然后调用userRepo._context.SaveChanges()
?
答案 0 :(得分:0)
是的,它是通过引用传递的。 ApplicationContext
是class
,C#中的每个类变量都通过引用传递给方法。
调用context.SaveChanges
可以更清楚地表明提交的整个工作单元可能跨越多个存储库,而不仅仅是一个存储库。
例如,您可以创建第二个存储库var roleRepo=new Repository<Role>(context);
并执行一些操作,例如添加新的Role
。 context.SaveChanges
将提交所有更改,并在单个事务中插入添加的用户和添加的角色。使用userRepo._context.SaveChanges()
(技术上可以使用公共_context
并且将完全相同)可能会导致错误的想法,即只保存在用户存储库中完成的更改。但事实上,所有通过context
传递的存储库所做的更改都会被保存。