1

J'utilise Entity Framework 6 avec une application ASP.NET MVC 5. Je ne veux pas utiliser l'approche code-first dans mon projet.Comment arrêter la migration dans Entity Framework 6 une fois pour toutes?

J'ai créé un nouveau projet et n'ai jamais activé les migrations. J'ai créé une nouvelle classe appelée MyContext qui étend la classe DbContext. Voici ce que j'ai dans MyContext constructeur

public MyContext() 
    : base(ConnectionName) 
{ 
     Database.SetInitializer<MyContext>(null); 
} 

Cependant, chaque fois que je Debut l'application, je vois la sortie suivante dans mon écran Debug output.

SELECT Count(*) 
FROM INFORMATION_SCHEMA.TABLES AS t... 

et

SELECT 
[GroupBy1].[A1] AS [C1] 
FROM (SELECT 
    COUNT(1) AS [A1] 
    FROM [dbo].[__MigrationHistory] AS [Extent1] 
    WHERE [Extent1].[ContextKey] = @p__linq__0 
) AS ...... 

Comment puis-je vraiment arrêter la migration dans ma demande?

+0

Avez-vous déjà supprimé table __MigrationHistory de back-end et le dossier de migration de la solution? –

+0

Votre projet contient-il un dossier Migrations ou un fichier Configuration.cs? Si oui, essayez de les supprimer. – Alisson

+0

Je n'ai pas de table __MigrationHistory. Je n'ai pas de dossier Migrations ou de fichier 'Configuration.cs'. Ces choses seraient créées après avoir activé la migration de la console, ce que je n'ai pas fait –

Répondre

0

il y a beaucoup d'exemples là-bas. La première chose que vous devez faire est d'installer les outils électriques via nuget, puis si vous avez déjà une base de données, utilisez l'assistant de reverse engineering. Jetez également un coup d'oeil à ceci si vous partez de zéro: EF DB First

ceci créera le contexte correct etc. pour vous.

si vous utilisez noyau .net alors jetez un oeil à ce lien

.net core reverse engineer

3

S'il est vrai que vous avez pas Migrations dossier, et aucun fichier Configuration.cs, la seule chose que je pense que vous avez manqué est le initialiseur de base de données. Même si vous désactivez l'initialisation de la base de données avec Database.SetInitializer<MyContext>(null);, il peut être configuré en utilisant le fichier de configuration:

Pour le désactiver à l'aide des fichiers de configuration, ajouter (source):

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings>  
     <add key="DatabaseInitializerForType MyNamespace.MyDbContext, MyNamespace" 
      value="Disabled" /> 
    </appSettings> 
</configuration> 
0

Le problème est la ligne

Database.SetInitializer<MyContext>(null); 

Besoin d'être dans un constructeur statique, pas un constructeur d'instance! :)

le faire cette:

static MyContext() 
{ 
     Database.SetInitializer<MyContext>(null); 
}