我的ASP.NET MVC Web应用程序需要模拟连接到数据库。我使用的是Form Authentication
而不是Windows Authentication
。我还在Trusted_Connection=True
中设置了connection string
。如果在Application Pool
中设置了模拟身份,则可以使用此方法,但是我需要以编程方式进行设置。我找到了this的编程方式(不是通过代码Application Pool
)。不幸的是,我使用Entity Framework
和Unity
注入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>();
}