【问题标题】:Entity Framework 4, POCO, WCF, Updating Many-To-Many实体框架 4、POCO、WCF、更新多对多
【发布时间】:2011-01-13 22:36:10
【问题描述】:

我的实体框架 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(item);

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

context.SaveChanges();

在这种情况下,记录不会从数据库的连接表中删除。有什么想法可以让它发挥作用吗?提前非常感谢。

【问题讨论】:

    标签: wcf entity-framework many-to-many poco


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      • 2011-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-01
      相关资源
      最近更新 更多