EF Core: метод 'ProcessModelFinalized' не имеет реализации - PullRequest
3 голосов
/ 20 марта 2020

Я сталкиваюсь с ошибкой при попытке получить информацию о DbSets в объекте DbContext с помощью ядра Entity Framework.

Мой объект DbContext выглядит следующим образом:

public class CatalogueContext : DbContext
{
    public DbSet<ConnectorCatalogueItemConv> CatalogueItemConvs { get; set; }

    public CatalogueContext(DbContextOptions<CatalogueContext> options)
        : base(options)
    {

    }

    public CatalogueContext()
    {

    }
}

Я пытаюсь создать экземпляр контекста, вызывая метод, который получает обобщенный c тип T, который может быть потомком DbContext this way:

public T GetContext<T>() where T: DbContext, new()
{
    var optionsBuilder = new DbContextOptionsBuilder<T>();
    var connectionString = Configuration.GetConnectionString(ExternalTablesKey);
    optionsBuilder.UseSqlServer(connectionString);
    return Activator.CreateInstance(typeof(T), optionsBuilder.Options) as T;
}

Строка подключения получена правильно с помощью Microsoft.Extensions.Configuration, поэтому проблема в том, что ее нет.

Наконец, я вызываю этот метод и пытаюсь получить любую запись в DbSets, объявленную следующим образом:

 public void SomeMethod()
 {
     using (var db = this.GetContext<CatalogueContext>())
     {
         var val = db.CatalogueItemConvs.ToList(); //Here is where I get the error below.
     }
 }

Показанная ошибка говорит:

Метод ' ProcessModelFinalized 'в типе' Microsoft.EntityFrameworkCore.Metadata.Conventions.SqlServerValueGenerationStrategyConvention 'из сборки' Microsoft.EntityFrameworkCore.SqlServer, версия = 3.0.0.0, культура = нейтральная, PublicKeyToken = реализация * 1018 1018 не имеет 1018. *

Я искал везде, но, похоже, об этой ошибке очень мало информации. Есть мысли?

РЕДАКТИРОВАТЬ 1: Мое решение включает Microsoft.EntityFrameworkCore.SqlServer в версии 3.0.0.0

РЕДАКТИРОВАТЬ 2: По запросу, я отредактировал код, включив в него только одну сущность и ее объявление класса. На данный момент нет сопоставления.

public class ConnectorCatalogueItemConv
{
    public string CodConnector { get; set; }
    public string CodCatalogue { get; set; }
    public string CodItemCia { get; set; }
    public string CodItemInbk { get; set; }
    public bool Defaultvalue { get; set; }
}

РЕДАКТИРОВАТЬ 3: Как создать экземпляр DbContext в EF Core

1 Ответ

2 голосов
/ 21 марта 2020

Я также столкнулся с той же ошибкой, я обновил свои Microsoft.EntityFrameworkCore.SqlServer и Microsoft.EntityFrameworkCore.Tools до версии 5.0 и затем это сработало,

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