Creo il primo modello di codice usando il framework di entità e dopo aver installato la prima versione al client abbiamo trovato alcune modifiche nelle colonne del database, utilizzo la migrazione di Entity Framework e applicate tutte le fasi di migrazione bat il data base del client non esiste righe della cronologia di migrazione di ultima modifica e mostra questo messaggio se eseguito
Table 'nameTable' already exists
o
Additional information: Duplicate column name 'Reference'
questo codice di configurazione di classe
internal sealed class Configuration : DbMigrationsConfiguration<GSM.DataAccess.GSMContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = false;
SetSqlGenerator("MySql.Data.MySqlClient", new MySql.Data.Entity.MySqlMigrationSqlGenerator());
}
protected override void Seed(GSM.DataAccess.GSMContext context)
{
}
}
e questo codice di prima migrazione di classe
public partial class AddMoreInformationColumn : DbMigration
{
public override void Up()
{
AddColumn("dbo.People", "Reference", c => c.String(unicode: false));
AddColumn("dbo.Products", "Reference", c => c.String(unicode: false));
AddColumn("dbo.Products", "SalePrice", c => c.String(unicode: false));
AddColumn("dbo.Products", "WholePrice", c => c.String(unicode: false));
}
public override void Down()
{
DropColumn("dbo.People", "Address");
DropColumn("dbo.People", "Reference");
DropColumn("dbo.Products", "Reference");
DropColumn("dbo.Products", "SalePrice");
DropColumn("dbo.Products", "WholePrice");
}
}
Per quanto riguarda il problema attuale, sembra che lo snapshot della migrazione del client non sia sincronizzato. Puoi semplicemente commentare il codice in conflitto nel metodo Up () e creare un database di aggiornamento per ripristinarli in sincronia. Se sei preoccupato per la mancanza di modifiche, dovrai utilizzare uno strumento di confronto dello schema ( http://www.techbubbles.com/sql-server/schema-compare-for-sql-server-in-visual-studio-2013/ ).
Vorrei ripensare la tua strategia per l'aggiornamento dei database del cliente (PRODUCTION). Quello che facciamo è generare uno script dalle nostre migrazioni che viene eseguito sul sito del cliente per aggiornarle. Vedi: http://cpratt.co/migrating-production-database-with-entity-framework-code-first/#at_pco=smlwn-1.0&at_si=54ad5c7b61c48943&at_ab=per-12&at_pos=0&at_tot=1
È inoltre necessario considerare quale sia l'inizializzatore del database e impostarlo su null o migratetolatestversion per la distribuzione.