我将 Entity Framework 和 ASP.NET 动态数据合并到一个现有的应用程序中,该应用程序设置为在 web.config 中使用 impersonation="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();
}
}
有人要求我在使用 Entity Framework 时保留此行为 ...鉴于实体对象在所有地方都被使用(在 LINQ to EF 查询、手动调用、框架的幕后调用等中) .), 分部类中的什么地方适合在每次调用时对 RevertToAppPool 和 UndoImpersonation 进行适当的调用?
最佳答案
您很可能需要创建自定义 Entity framework provider wrapper并在包装连接中在连接打开之前恢复模拟,并在连接打开后将其放回原处(希望这就足够了)。如果您改为对数据库使用 SQL 身份验证,您的生活会轻松得多。
通过恢复数据访问进行模拟看起来是非常奇怪的解决方案。我想知道在该应用程序中模拟的意义何在?
关于c# - Entity Framework 和模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7099104/