【发布时间】:2011-11-30 14:30:42
【问题描述】:
在我们的 SharePoint 应用程序中,我们将 UnitOfWork + Repository 模式与实体框架一起使用。为避免使用直通身份验证,我们开发了一段代码,在创建 ObjectContext 实例之前模拟单个用户,其方式与本网站“Impersonating user with Entity Framework”中描述的方式类似。
我们的代码和提到的问题之间的唯一区别是,为了进行模拟,我们使用RunWithElevatedPrivileges 来模拟应用程序池身份,如下例所示。
SPSecurity.RunWithElevatedPrivileges(delegate() {
using (SPSite site = new SPSite(url)) {
_context = new MyDataContext(ConfigSingleton.GetInstance().ConnectionString);
}
});
我们这样做是因为我们希望在模拟之后创建ObjectContext,并且由于存储库正在接收模拟的ObjectContext 将解决我们的要求。
不幸的是,这并不容易。事实上,我们体验到,即使ObjectContext 是在模拟情况之前和模拟情况下创建的,但真正的连接是在执行查询之前建立的,因此不使用模拟,这违反了我们的要求。
我检查了ObjectContext 类,看看是否有任何事件可以注入模拟,但不幸的是什么也没找到。
有什么帮助吗?
【问题讨论】:
标签: entity-framework sharepoint sharepoint-2010 impersonation