Ninject "custom" DBContext binding

本文关键字:quot binding DBContext custom Ninject | 更新日期: 2023-09-27 18:15:48

我目前正在一个虚拟MVC项目(尝试一些新的东西),但我有问题注入我的DatabaseContext到我的服务…

你可以在下面找到我的代码:

我DatabaseContext

:

public class DatabaseContext : DbContext
{
    protected DatabaseContext() : base("DatabaseContext")
    {
    }
    public DbSet<MacAddress> MacAddresses { get; set; }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }
}

My service &我想在其中注入上下文的接口:

public interface IMacAddressService
{
    List<MacAddress> GetAllMacAddresses();
}
public class MacAddressService : IMacAddressService
{
    private readonly DatabaseContext _context;
    public MacAddressService(DatabaseContext context)
    {
        this._context = context;
    }
    public List<MacAddress> GetAllMacAddresses()
    {
        return _context.MacAddresses.ToList();
    }
}

我可以在我的IKernel上应用什么绑定来正确注入我的DatabaseContext ?

供参考:

  • 我已经能够绑定类了,所以我的Ninject设置没有问题,我只需要知道如何绑定这个特定的上下文

  • 我搜索了一下,但我能找到的只是如何将DbContext绑定到自己…

  • 我使用EF教程中看到的自定义DbContext,以便我可以在我的服务中使用我的dbset(我稍后将为此使用存储库)

提前感谢!

Ninject "custom" DBContext binding

您没有使用任何抽象来传递DatabaseContext到您的服务,因此Ninject将在不需要任何额外配置的情况下解析它。

如果你想显式配置绑定,你可以使用Bind<DatabaseContext>().ToSelf()

编辑

我刚刚注意到你的DatabaseContext构造函数是受保护的

protected DatabaseContext() : base("DatabaseContext")
{
}

您需要将其设置为公共,以便能够创建DatabaseContext的实例