我使用webapi模板创建了一个具有dotnet核心的项目。我正在尝试使用Citms.EntityFrameworkCore.Oracle软件包将API与Oracle数据库连接,因为官方软件包不是免费的。但是每次启动API时,
都会出现以下错误context.Set<TEntity>();
GenericRepository.cs
public GenericRepository(ApplicationDbContext context)
{
this.Context = context;
this.DbSet = context.Set<TEntity>();
}
错误:
System.MissingMethodException: 'Method not found: 'Void Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommandBuilderFactory..ctor(Microsoft.EntityFrameworkCore.Diagnostics.IDiagnosticsLogger`1<Command>,
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddDbContext<ApplicationDbContext>(options =>
{
//options.UseMySql(Configuration.GetConnectionString("DefaultConnection"));
options.UseOracle(@"DATA SOURCE = <CONNECTION_STRING>");
});
services.AddSwagger();
//services.AddScoped<IValuesRepository, ValuesRepository>();
services.AddScoped<IValueService, ValueService>();
var corsBuilder = new CorsPolicyBuilder();
corsBuilder.AllowAnyHeader();
corsBuilder.AllowAnyMethod();
corsBuilder.AllowAnyOrigin();
corsBuilder.AllowCredentials();
services.AddCors(options =>
{
options.AddPolicy("SiteCorsPolicy", corsBuilder.Build());
});
}
答案 0 :(得分:1)
这是您使用的程序包中的错误,它使用已被修改的内部Entity Framework代码,现在不再正常工作。
有关Pomelo.EntityFrameworkCore.MySql包,请参见this similar issue,EF开发人员在其中响应:
@AdamDotNet感谢您举报。发生这种情况是因为MySQL提供程序正在使用EF Core内部代码-我为此提交了此问题:PomeloFoundation / Pomelo.EntityFrameworkCore.MySql#497
从EF方面,我们将分流讨论是否将此更改恢复为内部代码,但是从长远来看,解决方案是提供商应停止使用内部代码。