【问题标题】:RIA Services / EF. Changes to bool field in a derived class are not saving to databaseRIA 服务/EF。派生类中对 bool 字段的更改未保存到数据库
【发布时间】:2011-07-27 19:27:22
【问题描述】:

我们将 EF 与 RIA 服务结合使用。一个简单的应用程序。加载项目列表,浏览/编辑/保存。 问题是某些更改没有保留到数据库。

我有一个模型如下

Person
   ...
   string Name
   bool IsActive


Customer : Person
   ...
   string Address
   bool IsLocal

对 Person 所做的更改正确保存。

更改客户时,如果我将 IsLocal 值更改为 true,它会正确保存。如果我将其更改为 false,则更改不会持久化到数据库中。

  1. 样板生成代码,无自定义
  2. 没有错误消息。就提交操作而言,一切顺利。
  3. 地址更改正确保存
    • 如果我更改地址并设置 IsLocal,则两者都正确保存。
    • 如果我更改地址并清除 IsLocal,地址会保存,但 IsLocal 保持设置。
  4. 对 IsActive(亲自)的更改始终正确保存,无论是清除还是设置。
  5. 我在另一个解决方案中用不同的表重新创建了这个问题。
    • 似乎是同样的问题,无法清除派生类中的布尔/位字段。

人们可以提供的任何帮助将不胜感激。
谢谢,
艾伦。

【问题讨论】:

  • 你在这个问题上得到了帮助吗?我只是成为同一件事的受害者。
  • 没有。应答。这里的其他开发人员之一一直在跟进。 EF 的人说这并没有发生在他们这边,他没有收到 RIA 人的任何回复。我们目前正在使用存储过程作为解决方法。
  • 能贴出生成的客户端RIA文件源吗?
  • 这方面还有什么更新吗?我只是花了一天时间试图弄清楚这一点。我发现如果我在基类上设置 RoundtripToOriginal 属性,一切正常,但我认为这不是最佳选择......

标签: c# silverlight entity-framework ria


【解决方案1】:

好的,我有一个适合我的解决方案...

我将 Update 方法的生成代码替换为:

this.ChangeSet.AttachAsModified( entity, this.ChangeSet.GetOriginal( entity ) );

this.ChangeSet.Attach( entity );
this.ObjectContext.ChangeObjectState( entity, EntityState.Modified );

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2020-10-28
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多