在 ASP.NET MVC5 中使用 Ninject 注入实体框架 DbContext

2024-05-03

我刚刚进入依赖注入世界。

我有以下自定义 DbContext-

public partial class SkyTrackerContext: DbContext
{
    public SkyTrackerContext(): base()
    {
        Database.SetInitializer(new SkyTrackerDBInitializer());
    }
}

想在这个基本控制器中注入 SkyTrackerContext -

public abstract class BaseController : Controller
{
    public BaseController() {}

    [Inject]
    public SkyTrackerContext MyDbContext { get; set; }
 }

使用示例-

public class LoginController : BaseController
{            
    public ActionResult ValidateLogin(Login login) 
    {
      var query = MyDbContext.Persons.Where(.....);
    }
}

我应该在 NinjectWebCommon.cs 中编写什么来注入此上下文?

private static IKernel CreateKernel()
{
    var kernel = new StandardKernel();
    try
    {
        kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
        kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();

        RegisterServices(kernel);
        return kernel;
     }
     catch
     {
         kernel.Dispose();
         throw;
     }
}

首先,您应该避免方法注入。相反,使用构造函数注入。换句话说:

public abstract class BaseController : Controller
{
    protected readonly DbContext context;

    public BaseController(DbContext context)
    {
        this.context = context;
    }

    ...
}

然后,就 Ninject 配置而言,它非常简单:

kernel.Bind<DbContext>().To<SkyTrackerContext>().InRequestScope();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ASP.NET MVC5 中使用 Ninject 注入实体框架 DbContext 的相关文章

随机推荐

  • ASP.NET MVC - 路由 - 具有文件扩展名的操作

    有没有办法实现调用URLhttp mywebsite myarea mycontroller myaction xml这基本上是 假 请求文件 但结果将是一个为动态创建的文件提供服务的操作操作 我试过这个 context MapRoute
  • 如何使用 GCC 在 C 上编译库?

    我用这些文件创建了一个库pila h and pila c 我编译文件pila c with gcc pila c c这个库运行良好 我已经测试过了 然后我又做了一个图书馆 这个库有文件pila funciones extra h and
  • 我应该设计一个 SQL Server 数据库来依赖 UNION 还是避免它?

    执行以下 SQL 查询 SELECT Account Amount AS Deposit 0 00 AS Withdrawal Date FROM Deposits WHERE Account Account UNION SELECT Ac
  • LINQ 中的左外连接

    下面的代码不断给我一个错误消息 你调用的对象是空的 var partsWithDefaults from partsList1 in p join partsList2 in d on new PartNo partsList1 PartN
  • 向页面添加多个相同类型的用户控件

    已经有人问过与此类似的问题 但似乎没有一个问题能解决我的具体情况 这就是我正在尝试做的事情 我有一个管理学生信息的用户控件 即名字 姓氏 地址等 我有一个网页 表单 上面有一个按钮 添加学生 我想要完成的是每次单击后将新的 StudentI
  • php中有指针吗?

    这段代码是什么意思 这就是你在 php 中声明指针的方式吗 this gt entryId entryId PHP 中的变量名称以 开头 因此 entryId 是变量的名称 this是PHP面向对象编程中的一个特殊变量 它是对当前对象的引用
  • 宏中 do { } while(0) 与 ({ }) 的优点?

    Stack Overflow 上有很多关于使用的问题do while 0 在宏中 但这有点不同 我明白为什么do while 0 用于将多行代码包装在宏扩展中 但我经常看到另一种形式 The form 的优点是它是一个表达式并且可以有 返回
  • JJWT依赖混乱

    我继承了一个java项目 在POM xml中有这个
  • 如何更新 Google 表格插件

    我已对我的 已发布的 Google Sheets 插件 在脚本编辑器中 进行了更改 我创建了一个新版本并按 发布 gt 部署为附加组件 上面写着 You must configure the G Suite Marketplace SDK
  • 无法在 Google Colab 中打开从 GitHub 克隆的存储库

    我想克隆 GitHub 存储库 体验 keras yolo2 https github com experiencor keras yolo2 我按照以下命令操作 git clone https github com experiencor
  • 线性回归并将结果存储在数据框中[重复]

    这个问题在这里已经有答案了 我正在对数据框中的某些变量进行线性回归 我希望能够通过分类变量对线性回归进行子集化 对每个分类变量运行线性回归 然后将 t 统计数据存储在数据框中 如果可能的话 我想在没有循环的情况下执行此操作 这是我正在尝试做
  • 适用于 VPN 的 iOS 专用 API

    我正在寻找一些私有 API 来启动在 设置 应用程序中配置的 VPN 连接 有人有什么建议我可以在哪里找到它们吗 我唯一发现的是 ManagedConfiguration framework 这是正确的起点吗 没有任何文档 这有点困难 附
  • 脚本和链接标签的简写 http:// 为 // ?有人以前看过/用过这个吗?

    问题如下 如果您使用 addthis 共享按钮 查看任何网站 一旦您浮动在 addthis 按钮上 并且加载了所有必需的资源 请使用 firebug 或 chrome 检查器查看文档的正文 不是源代码 而是屏幕上的实际文档 对象检查器 你会
  • 监听鼠标事件……除了 div 的溢出:滚动滚动条?

    关于如何监听 mousedown 的任何建议 document exceptdiv 的溢出 滚动滚动条 我不确定滚动条是什么元素is为了参考它 您可以使用以下命令自行检查目标 document on mousedown function e
  • 使用 Asp.net 中的路由在 URL 中添加语言名称

    如何使用路由在 URL 中添加语言名称 我的网站运行于http localhost 41213 default aspxURL 成功 但该网站是多语言的 我的客户希望根据他想要的语言运行该网站http localhost 41213 en
  • 使用本地系统帐户运行时,GetAccessControl 方法失败,出现意外错误代码 3

    我已经创建了 Windows 服务并使用本地系统帐户运行它 该服务正在读取用户文件并查找其所有者 在获取文件的访问权限以查找所有者时 它抛出以下异常 方法失败 出现意外错误代码 3 StackTrace 在 System Security
  • 使用 Maven 仅下载 JAR

    我想让 Maven 下载 pom xml 文件中列出的 JAR 我怎么做 目前 Maven 想要编译该项目 但失败了 我不关心编译它 因为我是手动编译的 我只想要罐子 帮助 Albert ps 背景 我手动编译它是因为我可以轻松地在Ecli
  • 删除sql server中的大量数据

    假设我有一个有 10000000 条记录的表 这两种解决方案有什么区别 删除数据 例如 DELETE FROM MyTable 使用应用程序逐行删除所有数据 DELETE FROM MyTable WHERE ID SelectedID 第
  • 如何解析使用YUI数据源返回的NULL值

    我正在使用 YUI 数据表和数据源来渲染我的项目之一中的数据 返回的数据恰好为NULL YUI数据源无法解析它 下面是数据源和数据表的声明代码 为了便于阅读 我将每个声明分开 列说明声明 var columnDescription key
  • 在 ASP.NET MVC5 中使用 Ninject 注入实体框架 DbContext

    我刚刚进入依赖注入世界 我有以下自定义 DbContext public partial class SkyTrackerContext DbContext public SkyTrackerContext base Database Se