そのため、いくつかの POCO を作成しましたが、現在そのうちの 1 つは、テスト中のコレクションの一部です。私は MS Test を使用していますが、2 つのコレクションを比較する必要がある場合は CollectionsAssert.AreEquivalent() を使用するようです。これらの2つはCollectionAssert.AreEquivalent()で必要とされるため、.Equals()と.GetHashCode()をオーバーライドしたすべてのプロパティに加えて、私のエンティティで今。私の簡単な質問は、これら2つの方法があっても大丈夫ですか?
1 に答える
0
EqualsとGetHashCodeをオーバーライドする場合は、特別な注意が必要です。実装が正しくないと、デバッグが難しい微妙なバグやパフォーマンスの問題が発生する可能性があるためです。より安全なアプローチをテストするためにそれらが必要な場合は、IEqualityComparerを受け入れる独自のAreEquivalent()メソッドを実装することです。
EF自体はPOCOのEqualsとGetHashCodeに依存せず、代わりにエンティティのEntityKeyの同等のものを使用します。
これらのメソッドをオーバーライドする必要がある場合は、対応するEntityKeyに委任して、エンティティを使用する非EFコードでEFセマンティクスを取得できます。ただし、このアプローチは、キー値のみを使用してエンティティIDを確立するため、すべてのシナリオに適しているわけではありません。
于 2012-09-17T21:03:56.203 に答える