无法连接到ASPNET Core WebAPI中的Oracle Db

时间:2018-10-08 11:01:21

标签: c# asp.net oracle .net-core

我使用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());
    });
}

1 个答案:

答案 0 :(得分:1)

这是您使用的程序包中的错误,它使用已被修改的内部Entity Framework代码,现在不再正常工作。

有关Pomelo.EntityFrameworkCore.MySql包,请参见this similar issue,EF开发人员在其中响应:

  

@AdamDotNet感谢您举报。发生这种情况是因为MySQL提供程序正在使用EF Core内部代码-我为此提交了此问题:PomeloFoundation / Pomelo.EntityFrameworkCore.MySql#497

     

从EF方面,我们将分流讨论是否将此更改恢复为内部代码,但是从长远来看,解决方案是提供商应停止使用内部代码。