2011-03-10 57 views
0

我使用LINQ to sql .dbml,數據庫中的外鍵

我可以知道將外鍵約束添加到數據庫的最佳方法是什麼? ALTER TABLE Staffs Add CONSTRAINT fk_Staffs FOREIGN KEY(UserId) REFERENCES Users(Id);

我可以沒有問題寫。但是當我的數據庫表增加時,我很難維護添加約束外部腳本。每次當我有多個更新到數據庫列時,然後我會破解我的頭更新這些alter table腳本。

難道這裏有一個簡單的過程嗎?在.dbml中,我可以拖放關聯來添加外鍵,不知有沒有一種方法可以將這些外鍵導出爲腳本,就像我上面寫的那樣?當我想要部署時這是很好的。

或者我必須編寫alter script並在表格發生變化時更新它嗎? 請諮詢

+0

你使用什麼樣的數據庫? – 2011-03-10 09:40:24

+0

我不太明白:你需要應用這個命令**一次**到你的數據庫,然後你應該完成它... – 2011-03-10 10:50:20

+0

我正在使用MSsql。是的,但是如果數據庫列名更改?你當然需要去alter script來更新列。 – VeecoTech 2011-03-10 14:05:35

回答

1

您只需要爲每個實際變化的FK關係數據庫更新一次即可。
在做數據庫重構的背景下,這通常不是整個重構的重大問題。

但是,如果你不喜歡寫腳本,你可以使用表設計我SQL Management Studio中。

  1. 右鍵表 - >設計
  2. 右鍵單擊appropritate數據庫列(在設計行之一) - >關係
  3. 在對話框中,添加一個新的關係,並選擇相關的表和屬性編輯器中的列。
  4. 完成。
1

這是做正確的方式。你也可以在設計師那裏用另一個答案來寫,但如果你必須從開發推廣到生產,那麼你必須手工完成,這是非常單調乏味的,而且容易導致錯誤。

一個折衷可以使用設計做的修改,並在SQL Management Studio中使用鼠標右鍵單擊並選擇'腳本對象......「。比你不必輸入那麼多。

您提到表名稱的更改。那麼,這不應該經常發生!

如果它發生了很多,我建議你創建一些命名約定與您的團隊瞭解如何命名的列(並堅持給他們)和工作量將是有限的。