实体框架4,POCO,WCF,多对多更新

实体框架4,POCO,WCF,多对多更新,wcf,entity-framework,many-to-many,poco,Wcf,Entity Framework,Many To Many,Poco,我在实体框架POCO类中映射了多对多关系。在数据库中,它是一个带有复合键的联接表,POCO属性可以很好地生成 当我从上下文加载一个实体时,我可以从多对多集合中删除一个项,并且在保存更改时更新数据库 例如: var item=context.Items.First() item.OtherItems.Remove(item.OtherItems[0]) SaveChanges() 但是,当分离的对象图从WCF返回时,我将其附加到上下文并将其标记为已修改。但这些变化并没有持续下去 例如: //这在s

我在实体框架POCO类中映射了多对多关系。在数据库中,它是一个带有复合键的联接表,POCO属性可以很好地生成

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

例如:

var item=context.Items.First()

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

SaveChanges()

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

例如:

//这在silverlight客户端上发生

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

//在服务器上

上下文。项目。附加(项目)

context.ObjectStateManager.ChangeObjectState(项,EntityState.Modified)

SaveChanges()


在这种情况下,不会从数据库中的联接表中删除该记录。你知道我该怎么做吗?非常感谢。更改对象状态将标记您的实体已修改。您需要使用
changelationshipstate
来标记两个实体之间已修改的关系-这将对联接表执行DB修改。您需要将关系的状态设置为“已添加”或“已删除”