Dipende dalla versione di EF che si sta utilizzando. Anche con le migrazioni il risultato che si vedrà è qualcosa del tipo:
"ID colonna di rilascio" e "aggiungi colonna TeamId".
Con questa operazione si perdono tutti i valori e le "connessioni bambino" ......
L'unica soluzione "sicura" sto vedendo a questo punto è un mix di Migrazioni e "operazioni a mano SQL".
soluzione facile:
1- tenendo in considerazione che si dispone già di una migrazione "base" creare la tabella con ID, ora creare la nuova migrazione con il "aggiornamento". Ora NON eseguirlo ancora.
2- Aprire il file e scrivere una nuova linea prima che le linee generate e utilizzare un comando SQL, qualcosa di simile:
SQL("ALTER TABLE table_name RENAME COLUMN old_name to new_name;");
Questo cambierà il nome prima della migrazione elimina la colonna e creare un nuovo uno, quello che succederà è: cambi il nome prima dell'eliminazione, quindi l'eliminazione viene eseguita ma "fallirà" ma non danneggerà nulla.
Ma ora chiedi: perché lo faccio? beh se usi le migrazioni anche se elimini le righe per eliminare la colonna e ne crei una nuova, la prossima volta che creerai automaticamente un nuovo file di migrazione queste nuove linee saranno lì ... ecco perché.
RISPOSTE AGGIORNAMENTO # 1
Quando parlo di entità Migrazioni Framework mi riferisco a questo: http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-code-based-migrations-walkthrough.aspx quando si esegue il '-Aggiungere migrazione AddBlogUrl' comando in Package Manager Console, un nuovo file (* .cs) è stato creato.
Esempio di questa file di migrazione file con comandi SQL:
public partial class AddAbsencesTypesAndCategories : DbMigration
{
public override void Up()
{
CreateTable(
"pvw_AbsenceType",
c => new
{
Id = c.Int(nullable: false, identity: true),
Name = c.String(nullable: false),
CountAsVacation = c.Boolean(nullable: false),
IsIncremental = c.Boolean(nullable: false),
})
.PrimaryKey(t => t.Id);
.....
AddColumn("pvw_Absence", "CategoryId", c => c.Int(nullable: false));
AddForeignKey("pvw_Absence", "StatusId", "pvw_AbsenceStatusType", "Id");
AddForeignKey("pvw_Absence", "CategoryId", "pvw_AbsenceType", "Id");
CreateIndex("pvw_Absence", "StatusId");
CreateIndex("pvw_Absence", "CategoryId");
DropColumn("pvw_Absence", "MainCategoryId");
DropColumn("pvw_Absence", "SubCategoryId");
......
Sql(@"
SET IDENTITY_INSERT [dbo].[pvw_AbsenceStatusType] ON
INSERT pvw_AbsenceStatusType (Id, Name) VALUES (1, N'Entwurf')
SET IDENTITY_INSERT [dbo].[pvw_AbsenceStatusType] OFF
");
.....
}
public override void Down()
{
........
}
Si potrebbe mappare teamid al primario Id chiave con [colonna ("Id")] attributo o fare entrambe il nome della colonna e la variabile POCO devono essere nominato teamid? –
@ marvc1 Sto provando il tuo suggerimento, ti informerò in un minuto – Komengem
@ marvc1 hey amico, il tuo suggerimento sembra funzionare e vedo che hai dato una risposta qui sotto. – Komengem