1

私は、Entity Frameworkリポジトリで作業単位パターンを導入しました。 ** ゴルフの拍手 **Entity FrameworkとUnit Of Workで挿入と削除を同じコミットで実行しようとすると、一般的なプラクティスは何ですか?

私は、同じコミット内で複数のインセットや削除を行うのが一般的ではないのでしょうか?

たとえば、5つの新しいオブジェクト/エンティティを追加して何らかの理由でエンティティ#3を削除したいとします。

// Arrange. 
var uow = new UnitOfWork() { ... }; 
var myRepository = new MyRepository(uow); 
var entity1 = new Entity(){ ... }; 
// ... snip snip .. 

// Acts. 
myRepository.Add(entity1); 
myRepository.Add(entity2); 
myRepository.Add(entity3); 
myRepository.Add(entity4); 
myRepository.Add(entity5); 

// do some logic ... 

myRepository.Delete(entity3); 

uow.Commit(); 

エンティティを追加してから1をデータベースから削除する必要がありますか?または、これはEFエンティティリストに対してのみ発生しますか?

この悪い習慣ですか?すなわち、追加/更新と削除を混在させないでください。常に削除の前にコミットしますか?

答えて

0

これは許可されていますが、その順序は保証されません。 EFは最高の注文を把握しようとしますが、それができなければ投げます。これが包括的にテストするのが難しいように聞こえたら、まあ、あなたはおそらく正しいでしょう。

+0

こんにちは:)上記のテストのアレンジ/アクト/アサートの方法を含めるように答えを更新できますか?例えば。オブジェクトを作成します。それをロードします(私たちはそれが作成されたことを知っています)。その後、それを削除し、それが削除されたことを確認するためにリロードしようとします... –

+0

これは、プロバイダ固有の可能性があるので、私はユニットテストでこれをやりません。私は統合テストでそれをやっています。 –

+0

Ah soz。ええ。それはレポに対する合流テストです。でも、どうしたらいい? –

関連する問題