使用しているEFのバージョンによって異なります。 移行しても表示される結果は、
"drop column Id"と "add column TeamId"のようなものです。
あなたはすべての値および「子の接続」を失うことになる。これにより
......
私はこの時点で見ています唯一の「安全な」ソリューションは、移行と「手のSQL操作」のミックスです。
EASYソリューション:
の1-考慮して服用しますが、すでにIDを持つテーブルを作成する「ベース」移行を持って、今、「更新」で新しい移行を作成します。今はまだ実行しないでください。
2 - ファイルと生成された行の前に新しい行を作成し、SQLコマンドを使用することを開き、このような何か:
SQL("ALTER TABLE table_name RENAME COLUMN old_name to new_name;");
これは、移行が列を削除する前に名前を変更し、新しいを作成します。 1つは、何が起こるのでしょう:あなたは削除の前に名前を変更すると、削除が実行されますが、それは "失敗"しますが、何も傷つけることはありません。
しかし、今質問する:なぜ私はこれを行うのですか?列を削除して列を削除して新しい行を作成しても、移行を使用している場合は、次回新しい移行ファイルが自動的に作成されます。
UPDATED解答#1
私はEntity Frameworkの移行について話すとき、私はこれを参照しています:あなたはパッケージマネージャコンソール、新しいファイル(の「アドオンの移行AddBlogUrl」コマンドを実行すると http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-code-based-migrations-walkthrough.aspx * .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()
{
........
}
[Column( "Id")]属性を使用してTeamIdをプライマリキーIdにマッピングするか、列名とPOCO変数の両方にTeamIdという名前を付ける必要がありますか? –
@ marvc1私はあなたの提案をしようとしています。私はすぐにお知らせします – Komengem
@ marvc1ちょっとお友達、あなたの提案は働いているようです。 – Komengem