2016-09-20 308 views
1

我們使用實體框架代碼優先遷移。我們運行它沒有任何問題。我們正在嘗試將數據從舊數據庫遷移到新數據庫。我們需要刪除數據庫,創建所有表,插入數據,然後添加主鍵和外鍵。我們希望在EF中這樣做,以便我們可以格式化正在遷移的數據。我們已經成功地創建了數據庫,然後將數據遷移過來,但主鍵在舊數據庫中沒有出現。我已經使用ExecuteSqlCommand一個bulkinsert受審:實體框架代碼首先遷移和數據遷移

ctx.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[TableName] ON"); 

但這不起作用,因爲遷移scipts有idenity設置爲true:

Id = c.Int(nullable: false, identity: true), 

有沒有一種方法來設置身份假數據插入到數據庫後,將標識設置爲true?

回答

1

你正在以正確的方式做到這一點(Id是一個身份,你啓用身份插入)。 SET IDENTITY_INSERT ON僅對會話(連接)有效,因此您只需使用一個連接。
另外,您必須使用INSERT語句(而不是EF SaveChanges)對數據庫進行種子處理。