传递给域服务方法时,对象列表始终为空

时间:2011-02-23 17:34:05

标签: silverlight-4.0 ria

我非常关注我的智慧。我不明白我错过了什么。

这是我的设置:

    [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
}

在我的域名服务中,我有一个保存方法:

[Invoke]
    public void SaveObject(Class1 object) { ... }

当我说object.ItemList时,它总是为空的。即使它是在客户端上设置的,当我到达时它也是空的。

我已下载SP1 Beta,希望能解决我的问题。它没有。我已经尝试将我的列表移动到它自己的包装类中,并将其作为第二个参数传递(找到here)。我已经尝试为我的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 SaveTest(TestClass tc)

此调用方法不起作用,TestList为null:public void SaveTest(TestListClass tlc)

我为TestClass和TestList类添加了Insert / Update / Delete方法。

有谁知道我错过了什么?

1 个答案:

答案 0 :(得分:0)

我认为博文herehere会有所帮助。它显示了如何标记您的对象以通过线路传递它们。

我已经整理了一个简单的演示应用程序,您可以下载here。该应用程序显示将带有一组子对象的对象从Silverlight客户端通过网络传递到RIA域服务。