Nom de l'objet invalide " dbo.EdmMetadata " et " dbo. MigrationHistory'
J'utilise Entity Framework 5 et je fais une simple requête pour obtenir quelques utilisateurs d'une table.
la base de données SQL est déjà créée donc j'utilise mes entities comme un moyen de mapper ce que j'ai.
quand j'exécute ma requête je détecte que d'autres requêtes ont été exécutées et 2 d'entre elles avec des erreurs:
requête 1
ERROR: Invalid nom de l'objet 'dbo.__MigrationHistory".
SELECT
[GroupBy1].[A1] AS [C1]
FROM (
SELECT
COUNT(1) AS [A1]
FROM [dbo].[__MigrationHistory] AS [Extent1]
) AS [GroupBy1]
requête 2
ERROR: Invalid nom de l'objet 'dbo.EdmMetadata".
SELECT TOP (1)
[Extent1].[Id] AS [Id],
[Extent1].[ModelHash] AS [ModelHash]
FROM [dbo].[EdmMetadata] AS [Extent1]
ORDER BY [Extent1].[Id] DESC
Pourquoi est-ce?
je n'ai pas de dbo.EdmMetadata
et dbo.__MigrationHistory
tables dans ma base de données car la base de données existait déjà.
comment résoudre cela?
3 réponses
Depuis la base de données est déjà là, vous n'aurez pas dbo.EdmMetadata
et dbo.__MigrationHistory
ce que codefirst attend. Et pour résoudre cela, vous pouvez essayer de définir le SetInitializer
null.
static NameOfYourContext()
{
Database.SetInitializer<NameOfYourContext>(null);
}
Vous pouvez le voir dans la section des commentaires de ce post par Scott Gu
Il y a 3 étapes que vous devez suivre:
1 - Activer les migrations dans le gestionnaire de paquets si vous n'avez pas encore fait:
Enable-Migrations
2 - Ajoutez une migration et assurez-vous d'utiliser le commutateur-IgnoreChanges puisque vous avez déjà une base de données existante:
Add-Migration InitialModel -IgnoreChanges
3 - Mettre à jour la base de données. Cela créera automatiquement la table _ _ MigrationHistory pour vous.
Update-Database
j'ai désactivé mon réglage d'exception. et il a négligé cette exception et a continué à créer ces tables automatiquement pour moi