Ninject“自定义”DBContext绑定

时间:2015-10-03 21:54:38

标签: c# asp.net-mvc entity-framework ninject ninject.web.mvc

我目前正在开发一个虚拟的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>();
    }
}

我的服务&amp;我希望注入我的上下文的接口:

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设置没有任何问题,我只需要知道如何绑定这个特定的上下文

  • 我用Google搜索,但我能找到的就是如何将DbContext绑定到自身......

  • 我使用自定义DbContext,如EF教程中所示,以便我可以在我的服务中使用我的DbSet(稍后我会使用存储库)

提前致谢!

1 个答案:

答案 0 :(得分:1)

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

如果要明确配置绑定,可以使用Bind<DatabaseContext>().ToSelf()

修改

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

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

您需要将其设为公开才能创建DatabaseContext

的实例