Недопустимое имя объекта 'dbo.EdmMetadata' и 'dbo.__ MigrationHistory'
Я использую Entity Framework 5 и делаю простой запрос, чтобы получить несколько пользователей из таблицы.
База данных SQL уже создана, поэтому я использую свои объекты как способ сопоставления того, что у меня есть.
Когда я запускаю свой запрос, я обнаруживаю, что были выполнены другие запросы, и 2 из них с ошибками:
QUERY 1
ОШИБКА: Неверное имя объекта 'dbo.__ MigrationHistory'.
SELECT
[GroupBy1].[A1] AS [C1]
FROM (
SELECT
COUNT(1) AS [A1]
FROM [dbo].[__MigrationHistory] AS [Extent1]
) AS [GroupBy1]
QUERY 2
ОШИБКА: Неверное имя объекта 'dbo.EdmMetadata'.
SELECT TOP (1)
[Extent1].[Id] AS [Id],
[Extent1].[ModelHash] AS [ModelHash]
FROM [dbo].[EdmMetadata] AS [Extent1]
ORDER BY [Extent1].[Id] DESC
Почему?
У меня нет таблиц dbo.EdmMetadata
и dbo.__MigrationHistory
в моей базе данных, поскольку база данных уже существует.
Как это решить?
Ответы
Ответ 1
Так как база данных уже существует, у вас не будет dbo.EdmMetadata
и dbo.__MigrationHistory
, которые ожидаются с помощью codefirst. Чтобы решить эту проблему, вы можете попробовать установить SetInitializer
в значение null.
static NameOfYourContext()
{
Database.SetInitializer<NameOfYourContext>(null);
}
Вы можете видеть это в разделе комментариев этого сообщения Scott Gu
Ответ 2
Вам необходимо выполнить следующие шаги:
1- Включить миграцию в диспетчере пакетов, если вы еще не сделали этого:
Enable-Migrations
2- Добавьте переход и обязательно используйте переключатель -IgnoreChanges, поскольку у вас уже есть существующая база данных:
Add-Migration InitialModel -IgnoreChanges
3- Обновление базы данных. Это автоматически создаст для вас таблицу __MigrationHistory.
Update-Database
Ответ 3
Я отключил настройку исключения. и он упустил это исключение и начал автоматически создавать эти таблицы для меня.