2016-11-30 7 views
2

Entity Frameworkでエンティティのカスケード削除をテストするにはどうすればよいですか?Entity Frameworkでカスケード削除エンティティをテストする方法は?

私は2つのエンティティ[親と子]を持っていて、私は親を削除するとFakeDbset(メモリコレクション内)を使用していますが、カスケードの場合はすべての子がデータベースから削除されますFakeDbSetでテストされていますか?

私はカスケードがデータベース機能であることを知っています努力はこの状況でうまくいきますか?

+1

ないでユニットテストこの:

この次のコードは、私が添付リンクからです。データベースから制約が削除された場合(何らかの理由で、アップグレードスクリプトが誤っている可能性もあります)、単体テストは認識しません。これは、統合テストまたはエンドツーエンドテストの場合です。 –

答えて

1

https://github.com/aspnet/EntityFramework/issues/3924

これは、私を助け、あなたのコンテキストで子供を持っている必要がありますので、あなたは積極的なロードを使用して、子を.INCLUDEする必要があります。

[Fact] 
void test_written_in_notepad() 
{ 
    List<int> childIds; 
    using (var context = CreateInMemoryContext()) 
    { 
     var parent = context.Parents.Include(p => p.Children).FirstOrDefault(p => p.Id == 1); 
     childIds = p.Children.Select(c => c.Id).ToList(); 
     context.Remove(parent); 
     context.SaveChanges(); 
    } 

    using (var context = CreateInMemoryContext()) 
    { 
     Assert.Empty(context.Children.Where(c => childIds.Contains(c.Id)); 
    } 
} 
関連する問題