c# - Entity Framework 和模拟

标签 c# .net entity-framework impersonation asp.net-dynamic-data

我将 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/

相关文章:

c# - System.Reflection.BindingFlags.Instance 与 C# 访问修饰符的对应关系

.net正则表达式性能考虑: Use (partial or global) case-insensitive matching or explicit character groups?

c# - EF 中的 GUID COMB 策略

c# - 合并 ASP.NET MVC Controller 依赖项 (StructureMap)

c# - 样本采集器抓取的 Directshow 帧被裁剪

C# 将 Func<T1, object> 转换为 Func<T1, T2>

c# - HTTPS GET API 调用错误 - 无法创建 SSL/TLS 安全通道。 - 无法连接到远程服务器

c# - ReactiveUI、WPF 和验证

c# - 基类不能修改的类的基类方法?

c# - 我们可以在 Entity Framework 中使用没有主键的表吗?