C# [WCF][IsReference=true]比较同一实例的对象

C# [WCF][IsReference=true]比较同一实例的对象,c#,wcf,entity-framework,equals,C#,Wcf,Entity Framework,Equals,我正在开发一个WCF服务,并使用实体框架(EF)将数据库建模为对象 我还构建了自己的对象来扩展EF对象,以便提供自定义功能,而不是成为EF模型任何更新的“人质” 所以,问题是,想象两个孩子拥有相同的父对象(也就是说,父对象具有相同的Id,但在内存中不是相同的对象)。当我看到生成的SOAP消息时,它没有使用IsReference属性,因为WCF无法意识到对象应该是相同的 我尝试过覆盖Equals和ReferenceEquals,但是没有运气 有什么建议吗 致以最良好的祝愿, jpsfs 例如:

我正在开发一个WCF服务,并使用实体框架(EF)将数据库建模为对象

我还构建了自己的对象来扩展EF对象,以便提供自定义功能,而不是成为EF模型任何更新的“人质”

所以,问题是,想象两个孩子拥有相同的父对象(也就是说,父对象具有相同的Id,但在内存中不是相同的对象)。当我看到生成的SOAP消息时,它没有使用IsReference属性,因为WCF无法意识到对象应该是相同的

我尝试过覆盖Equals和ReferenceEquals,但是没有运气

有什么建议吗

致以最良好的祝愿, jpsfs

例如:

    [DataContract(Name = "Parent", IsReference = true)]
    public sealed class Parent 
    {

        [DataMember(Name = "Id")]
        public int Id
        {
            get;
            set;
        }
     }

    [DataContract(Name = "Child")]
    public sealed class Child 
    {

        [DataMember(Name = "Id")]
        public int Id
        {
            get;
            set;
        }
        [DataMember(Name = "Parent")]
        public Parent Parent{
            get;
            set;
        }

     }

我遇到了这个问题,但有一点不同,我将类本身作为一个孩子引用,但也无法理解它。最后,我通过引用而不是id手动分配它们。不过,我不知道其他解决方案。@Silvermind您是如何手动分配它们的?我正在做类似Child.Parent=新父(entityFrameworkChild.T\u Parent)的事情。这里的问题是使用“new”,但我没有看到任何其他方法可以做到这一点。您必须创建一个包含所有项目的平面列表,然后手动将每个项目和每个人分配给彼此。最好的方法是在“wcf类”中创建一个方法,如
MyChildClass.AddChild(childs)
,然后循环遍历所有对象,并将其父对象设置为
this
,然后继续运行树。当我有时间的时候,我会把一个例子放在一起。大概几小时后。