1

親エンティティ コレクションから子エンティティを削除すると、EF によって子エンティティの状態が削除ではなく変更されるように設定されていることに気付きました。

エンティティ オブジェクト マネージャ内に、それを削除するように設定する別のプロパティはありますか?

以下は、変更された子アイテムを見つけて削除するために、EF リポジトリの Save メソッド内で使用しているコードです。

Dim orphans = DataContextFactory.GetWMSDBContext().ChangeTracker.Entries().Where(Function(e) (e.State = EntityState.Modified) AndAlso TypeOf e.Entity Is StockTransferItem)
For Each orphan In orphans
    orphan.State = EntityState.Deleted
Next

私が抱えている問題は、両方の状態が変更済みに設定されているため、更新と削除の違いを検出しようとしていることです。現時点では、レコードも更新するとアイテムが削除されます。2 つの状態を検出できますか?

4

1 に答える 1

0

EFは、オブジェクトを削除するのではなく変更することを示しています。これは、オブジェクトを親コレクションから削除すると、オブジェクトが削除されるのではなく、変更されるためです。削除するには、削除するDeleteObject()オブジェクトを含むオブジェクトセットのメソッドを次のように使用します。

myObjectContext.StockTransferItems.DeleteObject(stockTransferItemToDelete);
于 2012-02-17T12:21:37.220 に答える