Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF Core DataContext与dotNet Framework 4.6.1和Ninject_C#_Asp.net Mvc 5_Entity Framework Core_Ninject - Fatal编程技术网

C# EF Core DataContext与dotNet Framework 4.6.1和Ninject

C# EF Core DataContext与dotNet Framework 4.6.1和Ninject,c#,asp.net-mvc-5,entity-framework-core,ninject,C#,Asp.net Mvc 5,Entity Framework Core,Ninject,我正在将EF Core 2.1.1添加到DotNet Framework 4.6.1 MVC 5项目中,该项目使用Ninject进行依赖注入。我想使用依赖项注入创建一个dbContext。我发现了,但它只显示了如何通过Microsoft依赖项注入实现这一点。我想知道Ninject中的等效版本是什么,尤其是以下部分: services.AddDbContextPool<ExampleContext>(options => { options.UseSqlServe

我正在将EF Core 2.1.1添加到DotNet Framework 4.6.1 MVC 5项目中,该项目使用Ninject进行依赖注入。我想使用依赖项注入创建一个dbContext。我发现了,但它只显示了如何通过Microsoft依赖项注入实现这一点。我想知道Ninject中的等效版本是什么,尤其是以下部分:

services.AddDbContextPool<ExampleContext>(options => {
        options.UseSqlServer("_connectionstring_");
    });
services.AddDbContextPool(选项=>{
options.UseSqlServer(“_connectionstring”);
});

在Ninject中,它看起来像

kernel.Bind<YourDbContextHere>.ToSelf().WithConstructorArgument("options", new DbContextOptionsBuilder<YourDbContextHere>().UseSqlServer("YourConnectionString").Options);
kernel.Bind.ToSelf();

允许您设置并非常愉快地调用dbcontexts另一种选择是:

public class MyContext : DbContext
{
    private readonly string connectionString;

    public MyContext (string connectionString)
    {
        this.connectionString = connectionString;
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(this.connectionString);
    }
}

kernel.Bind<MyContext>.ToSelf().WithConstructorArgument("connectionString", "YourConnectionString");
公共类MyContext:DbContext
{
私有只读字符串连接字符串;
公共MyContext(字符串连接字符串)
{
this.connectionString=connectionString;
}
配置时受保护的覆盖无效(DBContextOptions Builder Options Builder)
{
optionsBuilder.UseSqlServer(this.connectionString);
}
}
使用构造函数参数(“connectionString”、“YourConnectionString”);

您所拥有的功能适用于ninject,但如何将选项添加到上下文中?我现在遇到一个异常:
没有为此DbContext配置数据库提供程序。可以通过覆盖DbContext.OnConfigurang方法或在应用程序服务提供程序上使用AddDbContext来配置提供程序。
使用Microsoft.EntityFrameworkCore;public类YourDbContext:DbContext{public YourDbContext(DbContextOptions):base(options){}}一旦设置了DbContext,就不需要覆盖任何内容的OnConfigure是的,我现在知道了。我从以前的实现中删除了一些代码,以帮助验证ninject上下文是否正常工作,这就是引发错误的代码。哦。感谢您的帮助。在.net Core 2.0中,我是否应该添加kernel.Bind.ToSelf()。with constructor argument。。。。。。。在startup.cs中?或者它到底需要添加到哪里?@JoeSamraj它应该在startup.cs中,但需要一些修改-。这个问题有一个关于如何在使用.NETCore时设置ninject的详细答案,因为它随您使用的ninject版本而异