Я использую код Entity Framework. Первые миграции на некоторое время теперь, и мне нравится думать, что я хорошо знаю основы. Однако вчера я столкнулся с довольно странной проблемой, и я не могу найти решение.Entity Framework - добавить создание миграции для объектов во внешней сборке
Я добавил ссылку на DLL (сторонняя сторона - не разработана нами), которая имеет некоторые интерфейсы, которые мне нужны на моих сущностях. DLL содержит множество других вещей, таких как некоторые классы, которые нам не нужны и которые не используются.
Теперь с ссылкой и внедрением некоторых интерфейсов - когда я добавляю перенос с помощью команды «Добавить-миграцию», Entity Framework, похоже, забирает некоторые из классов в DLL и пытается создать таблицы для них в миграция.
Например, у меня есть объект «Пользователь» в моем проекте. Я добавил ссылку на ThirdParty.dll, которая содержит интерфейс IThirdPartyUser. DLL также содержит UnusedClass, , который я не использую - это никак не является частью моего контекста.
Когда я создаю миграцию, я получаю код для создания таблиц базы данных для UnusedClass. Например:
CreateTable(
"dbo.UnusedClass",
c => new
{
Id = c.Int(nullable: false, identity: true),
RegistrationNumber = c.Int(),
})
Теперь моя теория состоит в том, что эта внешней сборке (неправильно) имеет некоторую зависимость от Entity Framework - но я не могу понять, почему миграция пытается генерировать код базы данных для них - особенно они не являются частью моего контекста.
Кто-нибудь сталкивался с этим раньше? Я собираюсь начать пробную пробную версию, чтобы попытаться разобраться в сути проблемы.
Я думаю, что я достиг некоторого прогресса. Некоторые из неиспользуемых классов имеют свойства с именем «ID» в своем имени, которое, я думаю, Entity Framework собирает в качестве объекта, использующего его соглашения. У меня есть модель для игнорирования рассматриваемых классов - но есть ли способ исключить классы во всем пространстве имен/DLL или отключить соглашения таким образом? Не нравится тот факт, что EF рассматривает каждый класс в каждой отдельной DLL. – stevehayter