Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 单元测试和实体中的Equals/GetHashCode_Entity Framework_Mstest - Fatal编程技术网

Entity framework 单元测试和实体中的Equals/GetHashCode

Entity framework 单元测试和实体中的Equals/GetHashCode,entity-framework,mstest,Entity Framework,Mstest,因此,我创建了一些POCO,目前其中一个是我正在测试的集合的一部分。我正在使用MS Test,显然,当我需要比较两个集合时,我将使用CollectionAssert.Areequality。现在在我的实体中,除了所有属性之外,我还重写了.Equals和.GetHashCode,因为CollectionAssert.Areequality需要这两个属性。我的简单问题是-这两种方法可以存在吗?当覆盖Equals和GetHashCode时需要特别小心,因为不正确的实现可能会导致难以调试的细微错误和性能

因此,我创建了一些POCO,目前其中一个是我正在测试的集合的一部分。我正在使用MS Test,显然,当我需要比较两个集合时,我将使用CollectionAssert.Areequality。现在在我的实体中,除了所有属性之外,我还重写了.Equals和.GetHashCode,因为CollectionAssert.Areequality需要这两个属性。我的简单问题是-这两种方法可以存在吗?

当覆盖Equals和GetHashCode时需要特别小心,因为不正确的实现可能会导致难以调试的细微错误和性能问题。如果您只是为了测试而需要它们,那么更安全的方法是实现您自己的、接受IEqualityComparer的等效方法

虽然EF本身并不依赖Equals和GetHashCode来实现POCO,但它使用实体的EntityKey上的等价项


如果确实需要重写这些方法,可以委托给相应的EntityKey,以在使用实体的非EF代码中获取EF语义。然而,这种方法并不适用于所有场景,因为它只使用键值来建立实体标识。

您能说明您是如何实现这些方法的吗?