2013-07-08 74 views
0

您好,我發現一個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()私有變量是指這方面是參照存儲庫中構造通過呢?爲什麼我們不公開_context然後打電話userRepo._context.SaveChanges()

回答

0

是的,它通過引用傳遞。 ApplicationContextclass,並且C#中的每個類變量都通過引用傳遞給方法。

調用context.SaveChanges更清楚地表明整個工作單元都承諾可以跨越多個存儲庫,而不僅僅是一個。

例如,您可以創建第二個存儲庫var roleRepo=new Repository<Role>(context);並執行一些操作,如添加新的Rolecontext.SaveChanges將提交所有更改並在單個事務中插入添加的用戶和添加的角色。使用userRepo._context.SaveChanges()(這在技術上可能與公衆_context並且完全相同)可能會導致錯誤的想法,即只保存在用戶存儲庫中完成的更改。但實際上,所有通過context的存儲庫所做的更改均已保存。