如何将复杂对象插入数据库?

时间:2014-04-28 18:46:18

标签: entity-framework entity-framework-5

假设我们有这三个表:

--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"

使用Entity Framework(在我的情况下为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。这会导致这个问题吗?如果是这样,我根本不知道如何解决它。

2 个答案:

答案 0 :(得分:0)

您可能希望按如下方式更改操作顺序:

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

context.SaveChanges();

这样就可以在INSERT调用Event行(子代)之前发出对Car行(parent)的INSERT调用,从而避免出现外键错误。

答案 1 :(得分:0)

我发现了问题:两个表之间的FK关系存在问题。