我正在尝试根据经过身份验证的用户创建一个更改DbConnection字符串的应用程序。
因此,在用户登录后,我必须得到该用户,看到像“connectionName”这样的字段,并在我的app.config上查找该connectionString以连接到我的数据库。
我已经知道如何设置我的依赖注入以传递构造函数参数,但是如何获取我的依赖注入器项目已记录的用户?
像这样。
这是一个名为“Project.Infra”的项目
的DbContext
public class MyDbContext : DbContext
{
//ConnectionStringBasedOnUserLogged will be a propertie on my userModel
//so I have to get the logged user before have it.
public MyDbContext(string ConnectionStringBasedOnUserLogged)
: base(ConnectionStringBasedOnUserLogged)
{
Configuration.ProxyCreationEnabled = false;
Configuration.LazyLoadingEnabled = false;
}
//DbSets...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//Mappings...
}
}
这是一个名为“Project.Infra”的项目
存储库
public class MyRepository : IMyRepository
{
private MyDbContext _ctx;
public MyRepository(MyDbContextcontext)
{
this._ctx = context;
}
//Implementation of interface...
}
这是一个名为“Project.Api”的项目
控制器
public class MyController : ApiController
{
private IMyRepository _repo;
public MyController(IMyRepository repo)
{
this._repo = repo;
}
//Implementation
}
这是一个名为“Project.Startup”的项目
DepencyInjection
public static class DependencyResolver
{
public static void Resolve(UnityContainer container)
{
//How do I get here some details about the logged user at my application ?
container.RegisterType<MyDbContext, MyDbContext>(new HierarchicalLifetimeManager(), new InjectionConstructor("HereWillComeTheConnection"));
container.RegisterType<IMyRepository, MyRepository>(new HierarchicalLifetimeManager()); }
}