Nic*_*sen 3 asp.net-mvc session dependency-injection ninject
我们正在使用ASP.NET MVC,Entity Framework Code First和即将发布的SQL Azure Federations构建一个多租户数据库应用程序.我们的存储库接受DbContext作为使用Ninject注入的构造函数参数.问题是DbContext有一个int构造函数参数,用于指定将用于使用该上下文发出的请求的帐户ID.像这样的东西:
public class DatabaseContext : DbContext
{
public DatabaseContext(int accountId)
{
// Code here to ensure we only work with data associated with
// the account identified by accountId
}
}
Run Code Online (Sandbox Code Playgroud)
帐户ID的值将存储在Session变量中.问题是当我们创建一个新的DatabaseContext实例时,我们如何让Ninject将一个值从Session注入到构造函数中?
或者我还有另一种方法可以将帐户ID注入DbContext吗?
有几种方法.我喜欢使用这种.ToMethod方法.
Bind<DatabaseContext>().ToMethod(
c => new DatabaseContext((int)HttpContext.Current.Session["Acct"]);
Run Code Online (Sandbox Code Playgroud)
虽然为了解决这个特殊问题,但我发现创建一个ISessionManager基于会话的数据的服务更好.任何想要的东西,例如,accountId会将此服务注入构造函数,并AccountId在需要帐户ID时访问其属性.
| 归档时间: |
|
| 查看次数: |
1175 次 |
| 最近记录: |