Подтвердить что ты не робот

Недопустимое имя объекта '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 в моей базе данных, поскольку база данных уже существует.

Как это решить?

4b9b3361

Ответ 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

Я отключил настройку исключения. и он упустил это исключение и начал автоматически создавать эти таблицы для меня.