私はEF5とCode-Firstを使用しています。
FooBaseという抽象基本クラスがあります。Foo1とFoo2はどちらもFooBaseから継承します。Barと呼ばれるDiscriminatorに基づくEFのマッピング構成を使用します。したがって、Bar = someValueの場合は、Foo1を作成します... BarがanotherValueの場合は、Foo2を作成します。
Barは弁別子であるため、どのFooクラスのプロパティとしてもアクセスできません。
Foo1のインスタンスをFoo2に変換する必要があります。リフレクションを使用して、Foo1のキー値を含むプロパティを新しいインスタンスに移動します。異なるタイプであることを除いて、これは完全に複製されています。EntityStateを変更してデータベースに保存します。
ただし、データベースの識別子の値は更新されていません。それでもFoo1であるかのように同じ値のままです。
エンティティは変更のみに設定されているため、EFはわざわざディスクリミネーターをチェックしないと推測できます。
誰かがこれを回避する方法を知っていますか?