实体框架和Unity DI中的模拟

时间:2020-08-14 11:21:02

标签: c# asp.net-mvc unity-container impersonation

我的ASP.NET MVC Web应用程序需要模拟连接到数据库。我使用的是Form Authentication而不是Windows Authentication。我还在Trusted_Connection=True中设置了connection string。如果在Application Pool中设置了模拟身份,则可以使用此方法,但是我需要以编程方式进行设置。我找到了this的编程方式(不是通过代码Application Pool)。不幸的是,我使用Entity FrameworkUnity注入DbContext对象。是否可以在Entity Framework中全局模拟Unity连接?

此短代码不起作用

public class DataContext : DbContext
{
    readonly Impersonator impersonator;
    public DataContext()
        :base(DataConfigurationManager.ConnectionString)
    {
        Configuration.LazyLoadingEnabled = true;
        Configuration.ProxyCreationEnabled = false;
        Database.CommandTimeout = 120;

        impersonator = new Impersonator("user", "domain", "password");
    }

    protected override void Dispose(bool disposing)
    {
        impersonator.Dispose();
        base.Dispose(disposing);
    }
    
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        Database.SetInitializer<DataContext>(null);
        base.OnModelCreating(modelBuilder);
    }

    public DbSet<Person> Persons { get; set; }
}

UnityConfig类

public static void RegisterTypes(IUnityContainer container)
{
    container.RegisterType<DataContext>();
    container.RegisterType<IPersonService, PersonService>();
}

0 个答案:

没有答案