sql >> Databasteknik >  >> RDS >> Sqlserver

Finns det något sätt jag bara kan skapa en tabell i SQL Server och sedan uppdatera migreringen till mitt projekt?

Om ditt huvudmål är att skapa tabellerna först i databasen och sedan automatiskt uppdatera ditt projekt bör du använda Database First.

Som sagt, du måste först överväga nackdelarna med Database:enligt min personliga erfarenhet slutade jag använda det tillvägagångssättet främst på grund av två skäl:

  • Support för Database First kommer att avbrytas, så vitt jag vet. EF Core inkluderar inte redigeringsverktyget. Några länkar om detta:ett inlägg från Julie Lerman , EF Core roadmap , och ett tidigt tillkännagivande från Microsoft .
  • Modelredigeraren hade flera buggar och egenheter som gjorde att koden gick sönder då och då. Dessa buggar kommer med största sannolikhet inte att fixas (se föregående punkt). Saker som att ändra typen av ett befintligt fält, ändra främmande nycklar, etc.
  • Jag hade många problem på grund av sammanslagningar av källkodsförråd av de automatiskt genererade entitetsfilerna. Speciellt (men inte bara) när flera personer arbetade med samma enheter så vi fick sammanslagningskonflikter i den automatiskt genererade koden. Den automatiskt genererade koden checkades ibland inte ut korrekt, så den blev osynkroniserad med edmx. Jag är inte säker på att detta även händer med andra människor, men det verkar som att Visual Studio, redigeraren, verktyget för automatisk kodgenerering i bakgrunden och TFS-källkodshanteraren inte fungerar bra tillsammans.

Så om du verkligen inte kan leva utan att skapa först, fortsätter tabellerna i databasen med Database First, men du måste tänka på vad du förlorar om du inte använder Code First. Detta tillvägagångssätt rekommenderas allmänt av en anledning.

Vanligtvis är huvudorsaken till att människor använder Database First nuförtiden omöjligheten att migrera äldre kod till Code First-metoden. Så vitt jag vet är det allmänt accepterat att Code First är rätt väg att gå annars. Här har du ett intressant inlägg om detta (även om den är lite gammal, skriven för EF 4.1, när Code First introducerades, handlar den om de huvudsakliga för- och nackdelarna med varje tillvägagångssätt).

En lösning för dig kan vara att fortsätta använda Code First men också använda de tillgängliga verktygen som automatiskt genererar dina Code First-entiteter genom att göra omvänd konstruktion från databastabellerna. Med detta kan du fortfarande generera dina tabeller direkt i databasen, men fortsätt att använda Code First med migrering och allt. Här har du ett inlägg från Julie Lerman om några av dessa verktyg . Det kan finnas nyare verktyg, men jag har inte använt dem och jag vet inte om dem.

Notera:min personliga erfarenhet av Database First var lite dålig och varade inte för länge. Kanske kan någon med mer positiv erfarenhet av detta tillvägagångssätt ge mer användbar insikt om det. Jag har använt Code First ett tag nu och föredrar verkligen detta tillvägagångssätt. Mitt svar kan vara lite partiskt.



  1. Det gick inte att skapa MySQL Trigger

  2. Hur implementerar man batchhämtning med Fluent NHibernate när man arbetar med Oracle?

  3. SQL Server Geografi datatyp närmaste punkt på linjen

  4. Trunkering av en tabell i en lagrad procedur