2013-10-28 102 views
0

我需要將「訂單」表格發佈到網站,但由於超出此範圍的原因,Web應用程序無法直接訪問公司的數據庫。解決方案是在另一個數據庫(在遠程IIS服務器上)創建相同的「訂單」表,並將原始訂單(行)導出到它。爲此,我使用EF 5和AutomaticMigrationsEnabled = true如何正確複製表格並保留其原始鍵值

原始「訂單」表具有一個名爲「OrderNo」的關鍵列,其中「IsIdentity = Yes」。我想網絡「訂單」表也有其「OrderNo」作爲關鍵列,以便我可以使用「查找」方法來定位和更新行,但這裏是問題:

我不能因爲它必須保持原始的「OrderNo」值,但是在運行「PM> update-database」之後,將「OrderNo」列「IsIdentity」設置爲「是」。如果我將其設置爲「否」,則通過在設計模式下打開表格,下一次遷移將發生錯誤。

嘗試了一些選項之後,我發現如果我在其上添加另一個帶有[Key]屬性的「dummy」列,則該表使用2個鍵創建,並且沒有一個將標識設置爲「Yes」。通過這種方式,可以插入保留原始「OrderNO」值的新行,並使用「Find」方法更新行。當然,「查找」方法現在需要2個參數,虛擬列(其值始終爲0)以及原始的「OrderNo」。

雖然它在工作,但我知道這不是正確的方法,我想知道如果有人知道如何去做。

注意:我知道我可以找到使用查詢的實體,該查詢不需要「OrderNo」作爲鍵,但是我閱讀「Find」(使用主鍵)具有一些優點。

+0

您關閉了身份約束。 http://www.bennadel.com/blog/24-Turning-Off-and-On-Identity-Column-in-SQL-Server.htm – asawyer

+0

好的,但如何在EF中做到這一點?我沒有看到任何數據屬性。也許使用Fluent API? –

+0

兩者都存在,但它只在第一次創建表時有效http://stackoverflow.com/a/19313131/150342和http://stackoverflow.com/a/18917348/150342 – Colin

回答

相關問題