J'ai un modèle d'entité code premier dans EF5. Mais je veux gérer les modifications de base de données manuellement - je ne veux pas que EF modifie ma base de données existante et toutes ses données. Mais lorsque je modifie parallèlement le mappage EF et la base de données, EF refuse de fonctionner correctement, me disant que je dois utiliser le code en premier lieu. Comment puis-je désactiver cela?
définissez Database.SetInitializer sur null.
public class DatabaseContext: DbContext
{
//the base accepts the name of the connection string provided in the web.config as a parameter
public DatabaseContext()
: base("DatabaseContext")
{
//disable initializer
Database.SetInitializer<DatabaseContext>(null);
}
Donc, la réponse la plus complète que j'ai trouvée est la suivante:
Migrations
dans votre projet. Database.SetInitializer<DatabaseContext>(null);
dans votre initialiseur DatabaseContext. __MigrationHistory
dans votre base de données. Pour EF6 +, la table est située sous Tables
, mais pour les versions antérieures, elle se trouve sous System Tables
.Si vous souhaitez désactiver complètement les migrations:
https://stackoverflow.com/a/9709407/141172
Cependant, j’ai jugé préférable de garder le premier code activé pour les migrations, mais utilisez l’option -Script
pour que EF crée pour moi un script de changement de base de données que je peux appliquer manuellement à chaque base de données (développement, assurance qualité, production):
Update-Database -Script -ProjectName MyProject -StartupProjectName MyProject
De cette façon, EF créera le script de changement pour moi et je garde toujours le contrôle total sur les changements appliqués. Je modifie les scripts de changement comme n'importe quel autre code source.
Si vous avez déjà utilisé Migrations, le fait de modifier uniquement Initializer ne vous aidera pas. Vous devez accéder à Management Studio, ouvrir vos tables de base de données, accéder au dossier System Tables
et supprimer la table __MigrationHistory
située à cet emplacement (à partir de EF6, elle se trouve directement sous Tables
. Cela désactivera les migrations pour de bon.
Je viens de résoudre ce "problème" par
Mon environnement est
1. Visual Studio 2017 15.8.2
2. ASP NET MVC project
3. .NET Framework 4.6.1
4. Entity Framework 6.2.0