Ответ 1
Зависит от используемой вами версии EF. В результате миграции вы увидите следующее:
"drop column Id" и "добавить столбец TeamId".
С этим вы потеряете все значения и "дочерние соединения"...
Единственное "безопасное" решение, которое я вижу на данном этапе, - это сочетание Migrations и "ручных операций SQL".
Решение EASY:
1- принимая во внимание, что у вас уже есть "базовая" миграция, создающая таблицу с идентификатором, теперь создайте новую миграцию с помощью "обновления". Теперь НЕ запускайте его.
2- Откройте этот файл и напишите новую строку перед созданными строками и используйте команду SQL, примерно так:
SQL("ALTER TABLE table_name RENAME COLUMN old_name to new_name;");
Это изменит имя ДО того, как перенос удалит столбец и создаст новый, произойдет следующее: вы измените имя перед удалением, затем будет выполнено удаление, но оно будет "сбой", но это ничего не повредит,
Но теперь вы спрашиваете: зачем я это делаю? хорошо, если вы используете миграции, даже если вы удаляете строки для удаления столбца и создаете новый, при следующем автоматическом создании нового файла миграции эти новые строки будут там...... вот почему.
ОБНОВЛЕНО ОТВЕТЫ # 1
Когда я говорю о миграции объектов Entity Framework, я имею в виду следующее: http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-code-based-migrations-walkthrough.aspx Когда вы запускаете команду Add-Migration AddBlogUrl в консоли диспетчера пакетов, создается новый файл (*.cs).
Пример файла миграции файла с командами 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()
{
........
}