我目前正在开发一个虚拟的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(稍后我会使用存储库)
提前致谢!
答案 0 :(得分:1)
您不会使用任何抽象将DatabaseContext
传递给您的服务,因此Ninject会在没有任何额外配置的情况下解决它。
如果要明确配置绑定,可以使用Bind<DatabaseContext>().ToSelf()
修改强>
我刚注意到您的DatabaseContext
构造函数受到保护
protected DatabaseContext() : base("DatabaseContext")
{
}
您需要将其设为公开才能创建DatabaseContext