RIA服务/ EF.对派生类中的bool字段的更改没有保存到数据库中

本文关键字:保存 数据库 字段 bool EF 派生 RIA 服务 | 更新日期: 2023-09-27 18:03:38

我们将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 (in Person)总是正确保存,无论是清除还是设置。
  5. 我已经用不同的表在另一个解决方案中重新创建了这个问题。
    • 似乎是同样的问题,不能清除bool/bit字段在派生类

任何人们能提供的帮助都会很感激。
谢谢,
艾伦。

RIA服务/ EF.对派生类中的bool字段的更改没有保存到数据库中

好了,我找到了一个适合我的解决方案…

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

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

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

希望这对你有帮助!