Entity Framework и олицетворение - PullRequest
2 голосов
/ 18 августа 2011

Я включаю Entity Framework и ASP.NET Dynamic Data в существующее приложение, которое настроено на использование impersonation = "true" в web.config, однако предыдущие разработчики выбрали подход, при котором они возвращаются к пулу приложений. идентификатор для каждого звонка DAL, который они сделали

private WindowsImpersonationContext context = null;

public void RevertToAppPool()
{
    if (!WindowsIdentity.GetCurrent().IsSystem)
    {
        context = WindowsIdentity.Impersonate(System.IntPtr.Zero);
    }
}

public void UndoImpersonation()
{
    if (context != null)
    {
        context.Undo();
    }
}

Меня попросили сохранить это поведение при использовании Entity Framework ... учитывая, что объекты-сущности используются повсеместно (в запросах LINQ to EF, ручных вызовах, скрытых вызовах средой и т. Д.) ., где будут подходящие места в частичных классах для выполнения соответствующих вызовов RevertToAppPool и UndoImpersonation для каждого вызова?

1 Ответ

1 голос
/ 18 августа 2011

Скорее всего, вам понадобится создать пользовательскую оболочку провайдера Entity Framework и в завернутом соединении отменить олицетворение перед открытием соединения и вернуть его после открытия соединения (надеюсь, этого будет достаточно).Вам будет намного проще жить, если вы вместо этого будете использовать аутентификацию SQL для базы данных.

Импровизация с возвратом назад для доступа к данным выглядит довольно странным решением.Интересно, в чем смысл подражания в этом приложении?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...