В нашем приложении SharePoint мы использовали шаблоны UnitOfWork + Repository вместе с Entity Framework. Чтобы избежать использования сквозной аутентификации, мы разработали фрагмент кода, который олицетворяет одного пользователя перед созданием экземпляра ObjectContext
аналогичным образом, который описан в « Олицетворение пользователя с Entity Framework » в этом сайт.
Единственное различие между нашим кодом и упомянутым вопросом заключается в том, что для олицетворения мы используем RunWithElevatedPrivileges
для олицетворения удостоверения пула приложений, как в следующем примере.
SPSecurity.RunWithElevatedPrivileges(delegate() {
using (SPSite site = new SPSite(url)) {
_context = new MyDataContext(ConfigSingleton.GetInstance().ConnectionString);
}
});
Мы поступили так, потому что ожидали, что создание ObjectContext
после олицетворения и из-за того, что репозитории получают олицетворенную ObjectContext
, решит наше требование.
К сожалению, это не так просто. На самом деле мы поняли, что даже если ObjectContext
создается до и при обстоятельствах олицетворения, реальное соединение устанавливается непосредственно перед выполнением запроса, и поэтому не использует олицетворение , что нарушает наше требование.
Я проверил класс ObjectContext
, чтобы увидеть, было ли какое-либо событие, через которое мы можем ввести олицетворение, но, к сожалению, ничего не нашло.
Любая помощь?