首页 文章

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

提问于
浏览
0

我在我的Entity Framework POCO类中映射了多对多关系 . 在数据库中,它是一个带有复合键的连接表,并且POCO属性生成正常 .

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

例如:

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();

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

1 回答

  • 0

    更改对象状态标记您的实体已修改 . 您需要使用 ChangeRelationshipState 标记两个实体之间的已修改关系 - 这将在您的连接表上执行数据库修改 . 您需要将关系状态设置为已添加或已删除 .

相关问题