Я пишу WPF-приложение. NET Framework и использую Entity Framework. Сначала я установил пакет EF Core, и при выполнении моего первого add-migration
я получил известную ошибку
Невозможно создать объект типа 'DbContext'. Для различных шаблонов, поддерживаемых во время разработки, см. https://go.microsoft.com/fwlink/?linkid=851728
Однако, это не то, о чем мой вопрос. Я знал, что заставил его работать раньше, и заметил, что именно тогда я использовал EF 6 вместо EF Core. Поэтому я удалил пакеты EF Core и установил пакет EF 6. И теперь с EF 6 миграция работает просто отлично, и это здорово.
Но мой вопрос: почему IS работает? Несмотря на то, что я не изменил свой код, добавив IDesignTimeFactory<DbContext>
или внедрение зависимостей для создания экземпляра моего DbContext
класса. Тем не менее, он все еще работает, просто переключившись обратно на EF 6. Я не смог найти никакой информации о различиях между этими двумя (то есть EF Core и EF 6), которая бы это объяснила. Так что теперь я надеюсь, что кто-то здесь сможет просветить меня своими обширными знаниями.
Для справки, вот мой класс DbContext
:
public class PinboardContext : DbContext
{
public PinboardContext() : base()
{
}
public DbSet<Item> Items { get; set; }
}
Мой класс App.xaml.cs
пуст из пустого конструктора.
Наконец, если это важно, у меня есть connectionString, определенная в app.config следующим образом:
<connectionStrings>
<add name="mpcn" connectionString="Data Source=(localdb)\MSSQLLocalDB; Initial Catalog=MyPinboardDB;Integrated Security=True;" providerName="System.Data.SqlClient"/>
</connectionStrings>
Обратите внимание, что я уже посмотрел на это но это не помогло мне ответить на мой вопрос.