Silverlight 4.0 传递到域服务方法时对象列表始终为空

Silverlight 4.0 传递到域服务方法时对象列表始终为空,silverlight-4.0,ria,Silverlight 4.0,Ria,我在这里简直不知所措。我不明白我错过了什么 以下是我的设置: [DataContract] public partial class Class1 { [Key()] [DataMember] public string ID { get; set; } ... [Include] [DataMember] [Composition] [Association("FK_Class1ID",

我在这里简直不知所措。我不明白我错过了什么

以下是我的设置:

    [DataContract]
public partial class Class1
{
    [Key()]
    [DataMember]
    public string ID
    {
        get; set;
    }

    ...

    [Include]
    [DataMember]
    [Composition]
    [Association("FK_Class1ID", "ID", "Class1_ID")]
    public List<Class2> PierList
    {
        get; set;
    }

}

[DataContract]
public partial class Class2
{
    // This class has 3 values that make the key
    [Key()]
    [DataMember]
    public string Class1_ID
    {
        get; set;
    }

    [Key()]
    [DataMember]
    public int XID
    {
        get; set;
    }

    [Key()]
    [DataMember]
    public int YID
    {
        get; set;
    }

    [DataMember]
    public EnumType Type
    {
        get; set;
    }

    ...
}

[DataContract]
public enum EnumType
{
    [EnumMember]
    Val1,
    [EnumMember]
    Val2,
    [EnumMember]
    Val3,
    [EnumMember]
    Val4
}
当我说object.ItemList时,它总是空的。即使它是在客户端设置的,但当我到达这里时它是空的

我已经下载了SP1测试版,希望它能解决我的问题。没有。我已尝试将列表移出到它自己的包装器类中,并将其作为找到的第二个参数传入。我已经尝试为我的Class2对象创建虚拟get方法,正如我在这里的其他帖子中所建议的那样

什么都不管用,我越来越沮丧

如有任何建议,将不胜感激。我觉得我只是在做一些随机的改变,希望有些事情能奏效

谢谢

编辑:好的,我今天又回到了基础。以下是我的课程:

    public partial class TestClass
{
    [Key]
    public string ID { get; set; }
    public string ListID { get; set; }
    public int X { get; set; }
    public int Y { get; set; }
    public string Type { get; set; }
}

public partial class TestListClass
{
    [Key]
    public string ListID { get; set; }

    [Include]
    [Composition]
    [Association("TestListClass_ID", "ListID", "ListID")]
    public EntitySet<TestClass> TestList { get; set; }
}
这个调用方法工作得很好,我可以看到所有属性:public void savetestclass tc

此调用方法不起作用,TestList为null:public void saveTestListClass tlc

我已经为TestClass和TestList类添加了插入/更新/删除方法

有人知道我遗漏了什么吗?

这篇博文会帮助我思考。它显示了如何标记对象以使其通过导线


我已经把一个简单的演示应用程序,你可以下载。该应用程序显示将一个包含子对象集合的对象通过网络从Silverlight客户端传递到RIA域服务。

只是澄清一下-您的Class1和Class2对象来自域服务吗?或者它们是您自己的类,您正在使用RIA传输到Silverlight客户端?@Rus-它们是我自己的类,我正在使用RIA传输到我的Silverlight客户端。我查看了您的链接,并在我的域服务中为Class2对象添加了Insert/Update/Delete方法。我又跑了一次,没有。在我的Silverlight应用程序中,我像这样调用save对象:var save=\u context.SaveObjectchangedObject;当我这么说的时候,PierList已经被填充了。当我点击SaveObject方法上的断点时,PierList为空。这份名单没有通过,真令人沮丧。这是你不需要额外工作就能完成的事情Tyanna-我正在制作一个示例应用程序,它可以满足您的需求。我很快就会给你一个链接。非常感谢你的帮助!我添加了一个编辑我今天一直在尝试的内容。我希望应该更容易理解。泰安娜-演示应用有帮助吗?您的解决方案正在运行。我在此处未看到您的更新或答复。很抱歉我还没有考虑你的解决方案,但我会的。我确实找到了解决方法,在我的域服务中添加了一个SaveItems方法,该方法在会话中存储对象列表,直到调用SaveObject方法来保存父对象。虽然不漂亮,但效果不错。
    public partial class TestClass
{
    [Key]
    public string ID { get; set; }
    public string ListID { get; set; }
    public int X { get; set; }
    public int Y { get; set; }
    public string Type { get; set; }
}

public partial class TestListClass
{
    [Key]
    public string ListID { get; set; }

    [Include]
    [Composition]
    [Association("TestListClass_ID", "ListID", "ListID")]
    public EntitySet<TestClass> TestList { get; set; }
}