Ho la seguente situazione e non sono in grado di determinare la corretta strategia di migrazione. L'aiuto è apprezzatoEntity framework code first migration strategy with database esistente
- applicazione crea e utilizza database come l'archiviazione dei dati
- applicazione ha bisogno di aggiornare il database sulla start up se necessario
- utilizzando Nuget console di Gestione non è un'opzione. (Fini della migrazione, a livello locale non è un problema)
- I Have database in distribuzione che non sono EF
Ora voglio iniziare a utilizzare il primo approccio codice di EF esistente. Che cosa ho bisogno di realizzare è:
- Se nessun database quindi creare una
- Se database esiste l'uso di migrazione vuota (solo per essere pronto per i prossimi aggiornamenti)
- Questo dovrebbe avvenuto su richiesta avviare
database non esiste ====> Creare EF iniziale =====> Upg v1 =====> Upg V2
database esiste =====> Salta iniziale, ma essere pronti per prossimi aggiornamenti =====> Upg v1 ======> Upg v2
Grazie per il vostro aiuto
Informazioni aggiuntive: Questo è il database che esiste (solo un esempio):
CREATE DATABASE Test
GO
Use Test
GO
CREATE SCHEMA [TestSchema] AUTHORIZATION [dbo]
GO
CREATE TABLE [TestSchema].[Table1](
[Id] [uniqueidentifier] NOT NULL,
[Column1] [nvarchar](500) NOT NULL,
[Column2] [bit] NOT NULL,
[Column3] [bit] NOT NULL,
CONSTRAINT [PK_MonitorGroups] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Usando il reverse engineering EF creato migrazione iniziale:
public partial class Initial : DbMigration
{
public override void Up()
{
CreateTable(
"TestSchema.Table1",
c => new
{
Id = c.Guid(nullable: false),
Column1 = c.String(nullable: false, maxLength: 500),
Column2 = c.Boolean(nullable: false),
Column3 = c.Boolean(nullable: false),
})
.PrimaryKey(t => t.Id);
}
public override void Down()
{
DropTable("TestSchema.Table1");
}
}
se uso il codice fornito da @spender su un database non esistente, tutto è bello . Se lo utilizzo su un database esistente funziona finché non modifico il modello (prossima migrazione).
Quello che ho visto è che lo script di aggiornamento restituito dalla migrazione contiene l'intera creazione del database. E non può essere eseguito contro oggetti già esistenti.
Ciò che può effettivamente funzionare è aggiungere la tabella di migrazione al database esistente e aggiungere i dati iniziali, ma non sono sicuro che questa sia una buona soluzione.
Quindi vuoi lasciare che la comunità faccia funzionare il tuo progetto. –
@Farhad no, ho solo bisogno di un piccolo aiuto :) – Adi
Quindi va bene;) –