0

フレームワークがエラーで爆発することなく、メモリ内のエンティティのコレクションを一時的に変更する必要があります。一緒に働いているエンティティが 2 つあります。エンティティ A にはコレクションがあり、そこからアイテムを削除し、その場で作成した別のアイテムを追加するだけです。エンティティ B は、エンティティ A からのそのアイテムを使用して計算を行いますが、そのプロパティのいずれにも参照を保持していません。問題は、エンティティ B を保存しようとすると、エンティティ A のメモリ内の変更が原因で爆発することです。エンティティ A を保存しようとしているわけではありません。フレームワークは、私が変更を加えたことを理解し、このエラーをスローするだけです。

1 つ以上の外部キー プロパティが null 非許容であるため、リレーションシップを変更できませんでした

私は poco クラスを使用して各エンティティを個別に保存しているので、エンティティ B を保存するときにフレームワークがエンティティ A も保存しようとする理由がわかりません。

個々のエンティティに一定期間自分自身を追跡しないように指示する方法はありますか?

4

1 に答える 1

0

追跡せずにエンティティ A を取得する必要があります。とDbContext:

var aList = context.As.AsNoTracking();

あり(使用ObjectContextしませんが、とにかく)

context.As.MergeOption = MergeOption.NoTracking;
var aList = context.As;

したがって、EF は の変更を追跡することはなく、A保存することもできません。

于 2012-09-27T22:32:38.607 に答える