2010-07-26 57 views
0

我一直在挖掘在这里和谷歌的帖子,找不到任何帮助我解决问题,我已经与一个现有的实体上保存子实体。实体框架一对多关系保存问题

比方说,我有一个购物车,将持有物品,这意味着我有一个ShoppingCart实体,它具有ShoppingCartItem实体集合。

在我的控制器中,我检查ShoppingCart是否存在并检索实体(如果有的话)。如果不是,它是一个新的实体(Entitystate被标记为已添加)。 然后,我继续添加项目到现有的集合(如果有任何项目已在那里) 我现在的问题是,当我保存更改已创建的ShoppingCart: 它正在数据库中添加一个新的购物车与现有的项目和新的项目...

所以,如果我有一个Shoppingcart和两个孩子,我现在添加3个新项目,我最终在ShoppingCart表中有两个ShoppingCart条目和7个ShoppingCartItem条目..

我追踪了代码,并且ShoppingCart实体被标记为添加,只要使用AddObject()添加了新的ShoppingCartItem ...

我该如何预防?

非常感谢,

斯蒂芬

回答

1

最简单的办法是中检索与细节实体现有的购物车,然后不执行任何ADDOBJECT电话。改为调用SaveChanges()方法,这会将更改写入数据库而不创建新的ShoppingCart实体。

+0

嗨Devart, 我终于通过重新设计工作是如何建立的。 我首先创建了购物车,没有任何物品,因为我需要保存它,然后将新创建的购物车的ShoppingCart ID分配给我想创建的每个物品,并且瞧! 如果我想添加新的项目,购物车的创建是简单的跳过,一切都像一个魅力和更分离! 但是我会在一个测试项目中尝试一下你的建议,看看这会是一个有用的技术,以后再用于其他事情! 非常感谢! – 2010-07-28 12:11:21