Hoe verhouden OnModelCreating en niet-automatische migraties zich?

Wanneer ik een nieuwe tabel toevoeg die enkele relaties heeft met mijn database en vervolgens Toevoegen-Migratie uitvoert, zie ik die code worden gegenereerd in de Omhoog -methode om de tabel en zijn relaties toe te voegen . Ik geef er echter de voorkeur aan de relatie te definiƫren met behulp van de vloeiende API in de methode OnModelCreating . Hoe werken deze twee methoden samen? Kan ik de code verwijderen uit de Up -methode die de relatie bijvoorbeeld definieert?

6

1 antwoord

Elk van hen heeft een heel ander doel:

  • OnModelCreating is used for inline fluent-API definitions of your model. These definitions together with default conventions, data annotations and configuration classes forms the complete definition of the model.
  • Explicit migration defines what must be done to database to migrate it to the form required by your current model

Now, how those two relate? Migration has two inputs which are used to generate migration code (Up and Down methods). One input is the last migration record stored in __MigrationHistory table in the database. This record contains serialized model representing the database. This input is optional because first migration must work without it. The second input is mandatory - it is your current model which is retrieved by executing the code in your current assembly => Add-Migration will execute your OnModelCreating to get the current model and compare it with the model retrieved from the database. The result of comparison is content of Up and Down methods in the explicit migration.

11
toegevoegd
Bedankt! Dus, als ik het goed begrijp, zal de code in de Up -methode de definities weerspiegelen die zijn ingesteld in de methode OnModelCreating (stel dat u een migratie hebt toegevoegd na het schrijven van de vloeiende API-definitie van de cursus ). Je moet deze gereflecteerde definities niet verwijderen uit Boven .
toegevoegd de auteur Dabblernl, de bron
Ja dat is correct.
toegevoegd de auteur Ladislav Mrnka, de bron