Невозможно подключиться к Oracle Db в ядре aspnet webapi - PullRequest
0 голосов
/ 08 октября 2018

Я создаю проект с ядром dotnet, используя шаблон webapi.Я пытаюсь связать свой API с базой данных Oracle с помощью пакета Citms.EntityFrameworkCore.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 голосов
/ 08 октября 2018

Это ошибка в используемом вами пакете, он использует внутренний код Entity Framework, который был изменен, и теперь он больше не работает правильно.

См. эту похожую проблему для PomeloПакет .EntityFrameworkCore.MySql, на который разработчик EF ответил:

@ AdamDotNet Спасибо за сообщение об этом.Это происходит потому, что поставщик MySQL использует внутренний код EF Core - я подал эту проблему для этого: PomeloFoundation / Pomelo.EntityFrameworkCore.MySql # 497

Со стороны EF мы обсудим в triageили не возвращать это изменение во внутренний код, но долгосрочное решение заключается в том, чтобы поставщик прекратил использование внутреннего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...