我继承了一个 ASP.NET MVC3 + NInject 应用程序,我的任务是在 SQL Server 级别实现虚拟专用数据库。为了使其工作,用于连接到 SQL 的凭据需要根据用户进行更改。
如何将特定于会话的信息传递到存储库实现层?我宁愿不向每个服务和存储库调用添加参数。
当前,连接字符串是在创建存储库对象时从 web.config 条目设置的。
我继承了一个 ASP.NET MVC3 + NInject 应用程序,我的任务是在 SQL Server 级别实现虚拟专用数据库。为了使其工作,用于连接到 SQL 的凭据需要根据用户进行更改。
如何将特定于会话的信息传递到存储库实现层?我宁愿不向每个服务和存储库调用添加参数。
当前,连接字符串是在创建存储库对象时从 web.config 条目设置的。
看完这篇文章: Ninject - 根据子域动态指定连接字符串
我在基础存储库对象的构造函数中添加了一个参数:
public DataObject( string connectionString)
并在绑定代码中使用了 Ninject 方法WithConstructorArgument()如下:
k.Bind<Repository.Interface.Admin>().To<Repository.LinqToSql.Admin>().WithConstructorArgument("connectionString", context => GetConnString());