实体框架核心类库构建错误CS7036

时间:2017-08-05 18:32:49

标签: c# .net-core entity-framework-core

我确定我在这里找不到一些小而笨的东西。当我尝试构建我的类库时,我收到以下错误:

StaticDataHelper.cs(13,16): error CS7036: There is no argument given that corresponds to the required form
al parameter 'options' of 'StaticDataContext.StaticDataContext(DbContextOptions<StaticDataContext>)' [C:\U
sers\bryce\Google Drive\dotnet\libraries\EveStaticData\EveStaticData.csproj]

相关代码块如下所示:

public StaticDataContext(DbContextOptions<StaticDataContext> options)
    :base(options)
{  }

我试图关注微软推出的this指南。

我已经创建了代码here的GitHub存储库,相关的具体文件是here.

我一次又一次地检查了构造函数,所有其他类似的指南/教程都使用了相同的代码。

我正在使用:

  • EntityFrameworkCore 1.1.2
  • .netcore 1.1

如果有任何其他信息可以提供帮助,请告诉我。

1 个答案:

答案 0 :(得分:3)

您无需将DbContextOptions传递给构造函数和OnConfiguring()方法。只需使用ctorOnConfiguring()方法即可。

  

如果两者都使用,则对提供的选项执行OnConfiguring,   意思是它是附加的,可以覆盖提供给它的选项   构造函数参数。+

请点击此处获取指导:https://docs.microsoft.com/en-us/ef/core/miscellaneous/configuring-dbcontext

应该解决您的问题的示例代码更改(如果您没有从Startup注入DBContextOptions:

public partial class StaticDataContext : DbContext
{
    public StaticDataContext()  {   }

    //...

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlite(@"Datasource=sqlite-latest.sqlite");
    }

    //...
}

如果您通过依赖注入注入DbContextOptions,请使用以下命令:

public partial class StaticDataContext : DbContext
{
    public StaticDataContext(DbContextOptions<StaticDataContext> options) : base(options)
    {
    }

    //...

    //Removed as it's being injected in to the ctor via DI
    //protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    //{
    //  optionsBuilder.UseSqlite(@"Datasource=sqlite-latest.sqlite");
    //}

    //...
}