我确信我在这里遗漏了一些小而愚蠢的东西。当我尝试构建类库时,出现以下错误:
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微软推出的指南。
我已经为我的代码创建了一个 GitHub 存储库 here有问题的具体文件是 here.
我一次又一次地检查了构造函数,所有其他类似的指南/教程都使用了相同的代码。
我正在使用:
- EntityFrameworkCore 1.1.2
- .netcore 1.1
如果有任何其他信息可以提供帮助,请告诉我。
最佳答案
您不需要将 DbContextOptions
传递给构造函数和 OnConfiguring()
方法。只需在 ctor
或 OnConfiguring()
方法中执行即可。
If both are used, OnConfiguring is executed on the supplied options, meaning it is additive and can overwrite options supplied to the constructor argument.+
请参阅此处获取指导:https://learn.microsoft.com/en-us/ef/core/miscellaneous/configuring-dbcontext
应该解决您的问题的示例代码更改(如果您没有从 Startup
注入(inject) DBContextOptions:
public partial class StaticDataContext : DbContext
{
public StaticDataContext() { }
//...
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite(@"Datasource=sqlite-latest.sqlite");
}
//...
}
如果您通过依赖项注入(inject)注入(inject)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");
//}
//...
}
关于c# - Entity Framework 核心类库构建给出错误 CS7036,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45525223/