1

私はEFの最新バージョンを使用しており、オブジェクトのコピーを作成して新しいレコードとして挿入する方法を見つけようとしていますが、異なるオブジェクトを指すオブジェクトのすべてのプロパティが後でそれらのオブジェクトを指すようにしますコピー。

つまり、バージョンを持ち、作成者と会社のプロパティを持つ「ソフトウェア」オブジェクトと言いました。このソフトウェアのコピーを作成し、バージョンを更新します。作成者と会社は同じままですが、新しいレコードがあります。技術的には、必要に応じて以前のバージョンにロールバックできます。

現在、オブジェクトをフェッチし、更新し、新規として挿入すると、予期されるリンクされたオブジェクトの新しいバージョンが作成されます。オブジェクトをコンテキストにアタッチおよびデタッチできることは理解していますが、これは正しい種類のアプローチであると思われますが、新しいレコードが必要な場合にどのように機能するかはわかりません。

ありがとう

4

1 に答える 1

4

オブジェクトを更新するときは、SaveChanges()を呼び出す前に、EntityStateを変更して追加できるため、EFは既存のエンティティを更新するのではなく、エンティティを新規として追加します。

DbContextがある場合:

YourContext.Entry(YourEntity).State = EntityState.Added;

ObjectContextがある場合:

YourContext.ObjectStateManager.ChangeObjectState(YourEntity, EntityState.Added);
于 2012-09-13T15:50:07.813 に答える