2013-07-08 36 views
1

我有一個數據庫,其中包含一個可選的一對多關係。我想將此關係轉換爲所需的一對一關係。例如,一條魚需要有一個魚缸才能存在,一旦魚有魚缸,其他魚就不能有魚缸。但是沒有一條魚可以存在一個坦克。我想保留我擁有的數據。我的問題是當我嘗試更新數據庫時;實體框架現在看到我有兩個id,這是合理的,因爲外鍵將成爲魚桌的主鍵。我該如何解決這個問題?如何將一個到多個可選關係轉換爲一對一需要關係codefirst?

我正在使用C#和SQL Server。

+0

目前尚不清楚,你想做什麼?你的魚+坦克可能是一個不好的例子,因爲1魚只能連接到1坦克,1坦克可能連接到0或許多魚。 –

+0

我想要1個坦克鏈接到0或1條魚 –

+0

所以現在你有一個坦克有很多魚,你想在該坦克有0或1條魚?那麼不可能保存所有的數據,否則你將不得不殺死一些魚或添加一些坦克。這也使得這個例子很少有意義,並且可能是一個數據模型問題...... –

回答

0

如果它確實是一對一的關係,處理它的最簡單方法是將它們存儲在同一記錄中:例如,

CREATE TABLE Tank 
(
    tank_id Int IDENTITY NOT NULL, 
    fish_id Int NULL 
) 

(無魚罐將有一個NULL值fish_id)

+0

我試圖維護一個當前的數據庫及其數據並使用代碼第一個編輯一個關係 –

+0

@caseysebben 我不確定我是否理解:你想維護當前的數據庫結構,但強制執行一個:one or one:zero relationship? – Curt

+0

基本上這兩個表有一對多的關係,但它應該是一對一的關係,我試圖改變它使用實體框架,但它,因爲我的魚桌已經有一個魚ID所有列和使關係實體框架試圖使國外tank_id的魚桌id,並稱它爲魚Id –