我正在使用 EF5 和代码优先。
我有一个名为 FooBase 的抽象基类。Foo1 和 Foo2 都继承自 FooBase。我使用基于名为 Bar 的鉴别器的 EF 映射配置。因此,如果 Bar = someValue,则创建 Foo1... 如果 Bar 是 anotherValue,则创建 Foo2。
由于 Bar 是一个鉴别器,我无法将它作为任何 Foo 类的属性访问。
我现在需要将 Foo1 的实例转换为 Foo2。我使用反射并将属性移动到新实例,包括 Foo1 的键值。这是一个完全相同的副本,只是它是不同的类型。我将 EntityState 更改为已修改并保存到数据库。
但是,数据库中的鉴别器值没有得到更新。它仍然保持与 Foo1 相同的值。
我可以猜测,由于实体仅设置为修改,EF 不会费心检查鉴别器。
有谁知道解决这个问题的方法?