2011-01-13 110 views
0

我在我的实体框架POCO类中映射了多对多关系。在数据库中它是一个连接表具有复合键,POCO属性产生的罚款。实体框架4,POCO,WCF,更新多对多

当我从上下文加载实体时,我可以从多对多集合中删除一个项目,并且在保存更改时更新数据库。

例如:

var item = context.Items.First();

item.OtherItems.Remove(item.OtherItems [0]);

context.SaveChanges();

但是,当分离的对象图从WCF返回时,我将其附加到上下文并将其标记为已修改。但这些变化并未持续。

实施例:

//发生这种情况Silverlight客户端上

item.OtherItems.Remove(item.OtherItems [0]);

//并在服务器上

context.Items.Attach(项目);

context.ObjectStateManager.ChangeObjectState(item,EntityState.Modified);

context.SaveChanges();

在这种情况下,记录不会从数据库中的连接表中删除。任何想法如何让这个工作?首先十分感谢。

回答

0

改变对象的状态,标志着你的实体修改。您需要使用ChangeRelationshipState标记两个实体之间的关系修正 - 这将在你的连接表进行修改DB。您需要将关系的状态设置为已添加或已删除。

+0

谢谢你的回应,即解决它。 – user326502 2011-01-14 16:17:38