2011-08-17 116 views
2

我將實體框架和ASP.NET動態數據合併到一個現有的應用程序中,該應用程序在web.config中使用模擬=「true」,但是之前的開發人員選擇了一種方法,對每個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(); 
    } 
} 

我一直在問,而使用實體框架保持這種行爲......鑑於實體對象被用於所有的地方(在LINQ to EF查詢,手動調用,框架後臺調用等),那麼在哪些地方可以在分部類中對每個調用進行適當的RevertToAppPool和UndoImpersonation調用?

+0

會調用上下文類的OnContextCreated中的RevertToAppPool,並重寫Dispose來調用UndoImpersonation是一個合適的解決方案嗎?我無法從我的唉聲中測試這個。 – manning18

回答

1

你很可能需要創建自定義Entity framework provider wrapper,並且在打開連接之前恢復模擬,並在連接打開後恢復模擬(希望它已經足夠)。如果您使用SQL身份驗證來替代數據庫,那麼您的生活將更加輕鬆。

回覆數據訪問恢復看起來很奇怪的解決方案。我想知道該應用程序中扮演的角色是什麼?