2014-04-28 37 views
1

比方說,我們有這三個表:如何將複雜對象插入數據庫?

--Car-- 
ID 
1 
2 

--Event-- 
ID CarID EventTypeID DateTimeAdded 
1 1  1   2014-04-28 12:00:00  

--EventType-- 
ID Name 
1 "Entry Created" 
2 "Entry added to sales chart" 
3 "Entry removed from sales chart" 

使用實體框架(EF 5在我的情況),一個如何將一個Car對象添加到數據庫中?我已經嘗試了許多不同的方法來完成此操作,包括下面的代碼,但沒有任何工作。

Car newCar = new Car(){ } 

Event newEvent = new Event(){ 
    CarID = newCar.ID, 
    EventTypeID = 2, 
    DateTimeAdded = Datetime.Now; 
} 

newCar.Event.Add(newEvent); 

context.Car.Add(newCar); 
context.SaveChanges(); 

任何援助將不勝感激。


編輯:發生context.SaveChanges()後出現在try catch中的異常。例外情況如下:

INSERT語句與FOREIGN KEY約束「FK_Event_EventType」衝突。衝突發生在數據庫「CarSystem」,表「dbo.EventType」,列'ID'

注意:這三個表之間存在關係,包括Event和EventType。這是否會導致問題?如果是這樣,我不知道如何解決它。

+0

你的代碼似乎沒有錯(除了一些語法錯誤)。您創建一輛新車,將其添加到DbSet並保存。標準的東西。你在看數據庫嗎? –

+0

是的,它正在查看正確的分貝。 context.SaveChanges()發生後,try catch中發生異常。以下是例外情況的內幕:INSERT語句與FOREIGN KEY約束「FK_Event_EventType」衝突。衝突發生在數據庫「CarSystem」,表「dbo.EventType」,列'ID'。 – flying227

回答

0

我發現問題:兩個表之間的FK關係有問題。

+1

這不是一個能夠啓發未來遊客的答案。您應該詳細說明或刪除您的問題。 –

0

您可能要更改操作的順序如下:

context.Car.Add(newCar); 
newCar.Event.Add(newEvent); 

context.SaveChanges(); 

這樣的INSERT呼籲租車行(母公司)將在INSERT呼籲事件行(子)之前發佈,避免了外鍵錯誤。