2017-01-16 10 views
2

エンティティのノウハウに関する質問。DbContext.SaveChangesを使用せずに削除およびクエリを実行する

... 
var entitiesToRemove = dbSet.Where (entity => entity.TimeToLive > 5); 
dbSet.RemoveRange(entitiesToRemove); 
var resultEntities = dbSet.Where(entity => /* some condition that will also match before deleted entities*/); 
... 

質問:事前に削除されたエンティティはまたresultEntitiesかに含まれることになる次のコードを考えると? dbSet.RemoveRangeの後にDbContext.SaveChangesに電話する必要がありますか?

Thxをは

答えて

1

さらに処理する前にdbcontext.SaveChanges()を実行する必要があります。 dbSet.RemoveRange(entitiesToRemove)では、EFはこれらのエンティティに削除をマークしました。あなたはSaveChanges()を呼び出した後にのみdbに反映されます。

1

はい、私はDbContext.SaveChangesはい、事前に削除されたエンティティがresultEntitiesに含まれますdbSet.RemoveRange

1

後に行くべきだと思います。 Beacause、RemoveRangeはデータベースに反映されませんでした。そして、resultEntitesの結果が得られたら、データベースを照会しているので、結果として削除された値も得られます。

削除した値が表示されないようにする場合は、RemoveRangeの後にDbcontext.Savechanges()に電話する必要があります。

これが役に立ちます。

関連する問題