gpt4 book ai didi

entity-framework - 在 ASP.NET MVC5 中使用 Ninject 注入(inject) Entity Framework DbContext

转载 作者:行者123 更新时间:2023-12-01 19:11:16 27 4
gpt4 key购买 nike

我刚刚进入依赖注入(inject)世界。

我有以下自定义 DbContext-

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

想在此基本 Controller 中注入(inject) 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 中编写什么来注入(inject)此上下文?

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;
}
}

最佳答案

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

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

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

...
}

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

kernel.Bind<DbContext>().To<SkyTrackerContext>().InRequestScope();

关于entity-framework - 在 ASP.NET MVC5 中使用 Ninject 注入(inject) Entity Framework DbContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41347607/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com