entity-framework - 比较两个 Entity Framework 实体的最佳方法是什么?

标签 entity-framework comparison

我想知道比较相同类型的两个实体的最有效方法。

一个实体是手动从 xml 文件创建的(即新实例和手动设置的属性),另一个是从我的对象上下文中提取的。

我想知道每个实例中的属性值是否相同。

我的第一个想法是从每个对象生成属性值的散列并比较散列,但可能有另一种方式,或内置方式?

欢迎大家提出意见。

非常感谢,

詹姆士

更新

我想出了这个:

static class ObjectComparator<T>
{
    static bool CompareProperties(T newObject, T oldObject)
    {
        if (newObject.GetType().GetProperties().Length != oldObject.GetType().GetProperties().Length)
        {
            return false;
        }
        else
        {
            var oldProperties = oldObject.GetType().GetProperties();

            foreach (PropertyInfo newProperty in newObject.GetType().GetProperties())
            {
                try
                {
                    PropertyInfo oldProperty = oldProperties.Single<PropertyInfo>(pi => pi.Name == newProperty.Name);

                    if (newProperty.GetValue(newObject, null) != oldProperty.GetValue(oldObject, null))
                    {
                        return false;
                    }
                }
                catch
                {
                    return false;
                }
            }

            return true;
        }
    }
}

我还没有测试过,它更像是一种思考的食物,可以从小组中产生更多的想法。

可能有问题的一件事是比较本身具有实体值的属性,如果默认比较器比较对象引用,那么它永远不会为真。一个可能的解决方法是在我的实体上重载相等运算符,以便它在实体 ID 上进行比较。

最佳答案

覆盖对象的 Equals 方法并编写一个实现来比较使其相等的属性。

    public override bool Equals(object obj)
    {
        return MyProperty == ((MyObject)obj).MyProperty
    }

关于entity-framework - 比较两个 Entity Framework 实体的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1092534/

相关文章:

c# - 模型优先 Entity Framework 应用程序中的验证

pdf - PDF 文件的视觉差异以确定像素完美度

c# - 内存泄漏 Entity Framework

entity-framework - Linq to Entities与ESQL的性能

java - 如何在 Eclipse 中的 git 分支之间进行纯文本比较(使用 EGit)

python - 计算两个字符串python之间的匹配次数

python - 无序比较两个 NumPy 数组

templates - 存在Razor模板时使用XSL的原因

c# - Entity Framework Core 2.0 添加迁移不生成任何内容

c# - POCO 类未从 WCF 返回