1

テーブルの Discriminator( _ Disc _ ) フィールドを更新および変更する必要がありますが、マップされたエンティティにはエンティティ メンバーとしてそれがありません。解決策はありますか?

4

1 に答える 1

4

Discriminator 列は、TPH 継承でエンティティの種類を定義するために使用され、EF はそれを変更できません。これはオブジェクト指向言語の継承のようなものです。あるタイプのオブジェクトを定義すると、別のタイプにすることはできません。親にキャストすることはできますが、元のタイプのインスタンスのままです。それを別の型に変更する唯一の方法は、新しい型の新しいインスタンスを作成し、何らかの方法で最初のオブジェクトから新しいオブジェクトに値をコピーすることです。

したがって、ディスクリミネーターを変更する必要がある場合は、古い ADO.NET と SQL を使用して EF = なしで変更する必要がありますが、変更がエンティティ モデルの他のルールに従わない場合、EF の機能が損なわれ、アプリケーションが機能しなくなります。

于 2011-12-29T18:35:14.907 に答える