Vraag Hoe kan ik migratie in Entity Framework 6.0 uitschakelen?


Ik probeer de "automatische" migratie te negeren met Entity Framework 6.0 rc1. Mijn probleem is dat ik deze functie nu niet wil en elke keer dat mijn toepassing wordt uitgevoerd, kan ik zien dat alle entiteitslogboeken alle tabellen proberen te maken.

Anticipeer op dank.


61
2017-09-06 21:55


oorsprong


antwoorden:


Probeer dit:

internal sealed class Configuration : DbMigrationsConfiguration<YourContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = false;
    }
}

BIJWERKEN:

Je kunt dit ook proberen:

Database.SetInitializer<YourContextType>(new CreateDatabaseIfNotExists());

43
2017-09-07 03:26



Je kunt dit in je entityFramework-gedeelte van de app.config plaatsen:

<contexts>
  <context type="YourNamespace.YourDbContext, YourAssemblyName" disableDatabaseInitialization="true"/>
</contexts>

Deze msdn-pagina vertelt alles over de Entity Framework Configuration Section.


42
2018-01-22 15:34



Via web.config zien - https://msdn.microsoft.com/en-us/data/jj556606.aspx#Initializers

Via Code (vreemd genoeg, VEEL eenvoudiger antwoord)

public class MyDB : DbContext
{
    public MyDB()
    {
        Database.SetInitializer<MyDB>(null);
    }
}

of in Global.asax.cs

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        // ...

        Database.SetInitializer<MyDB>(null);

        /// ...

    }
}

24
2018-01-23 16:43



De fout die ik maakte was Database.SetInitializer (null) aanroepen; te laat (nadat de context was geïnitialiseerd). De beste manier om ervoor te zorgen dat migraties zijn uitgeschakeld, is door de bovenstaande aanroep uit te voeren voor al uw contexten bij het opstarten van uw toepassing. Ik geef de voorkeur aan deze benadering door deze in de app.config in te stellen, zodat ik mijn container kan gebruiken om mijn contexten te lokaliseren en vervolgens een oproep te bouwen.

var migrationsMethod = typeof(System.Data.Entity.Database).GetMethod("SetInitializer");
foreach (var contextType in allContextTypes)
{
    migrationsMethod.MakeGenericMethod(contextType).Invoke(null, new object[] { null });                            
}

3
2018-05-30 11:35



Als je deze vraag hebt gevonden in de hoop op een eenvoudig antwoord om migraties uit te schakelen omdat je "Enable-Migrations" hebt getypt en nu werkt het niet zoals je verwachtte, zoals het niet uitvoeren van de seed-methode die je dacht dat het zou doen, kijk dan in de oplossing verkenner en verwijder de map Migraties. Dat zal de code stoppen om naar de migraties config te kijken om de initialisatiecode te vinden. Om de map Migrations terug te krijgen, voert u opnieuw "Enable-Migrations" uit.


1
2018-04-10 18:14



Het uitschakelen van de automatische migratie kan ook worden geconfigureerd tijdens het aanroepen van de enable-migrations commando (waarmee de Configuration klasse), met behulp van de EnableAutomaticMigration parameter met een waarde van false:

enable-migrations -EnableAutomaticMigration:$false -ContextTypeName FullyQualifiedContextName

De zal een maken Configuration klasse die de AutomaticMigrationsEnabled eigenschap tot false, zoals in het bovenstaande antwoord.


De EnableAutomaticMigration parameter van de enable-migrations commando wordt vermeld in deze artikel van de Entity Framework Tutorial-pagina (hoe ze het ook gebruiken true wat de standaardwaarde lijkt te zijn).


0
2017-08-26 12:47