代码之家  ›  专栏  ›  技术社区  ›  Pedro Silva

无法连接到aspnet core webapi中的Oracle Db

  •  1
  • Pedro Silva  · 技术社区  · 7 年前

    我使用webapi模板创建了一个具有dotnet核心的项目。我正在尝试使用Citms.EntityFrameworkCore.Oracle包将API与Oracle数据库连接起来,因为官方包不是免费的。但每次启动API时,我都会遇到以下错误

    context.Set<TEntity>();
    

    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>, 
    

    启动.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 回复  |  直到 7 年前
        1
  •  1
  •   user247702    7 年前

    这是您使用的包中的一个bug,它使用的是经过修改的内部实体框架代码,现在它不再正常工作。

    看到了吗 this similar issue 对于Pomelo.EntityFrameworkCore.MySql包,EF开发人员响应为:

    @AdamDotNet感谢您的报道。这是因为MySQL提供程序正在使用EF核心内部代码——我为此提交了这个问题:PomeloFoundation/Pomelo.EntityFrameworkCore.MySQL#497