RIA和POCO儿童父母关系不返回所有数据

时间:2011-01-26 17:17:46

标签: c# silverlight poco ria

我正在尝试设置POCO RIA Silverlight项目。当域服务返回时,数据是缺少数据。

下面我已经包含了父/子课程和我的域名服务。它应返回5个父对象的列表,每个父对象包含3个子对象。我相信我已经设置域服务以正确返回我想要的对象树。

域服务返回5个父对象。第一个父对象正确包含3个子对象。

但是,所有后续父对象都不包含子对象。我做错了。

我找到了一些资源可以提供帮助,而且我似乎遵循他们规定的方法而没有结果。

Link 1 Link 2

如果有人能够指出我做错了什么,我会非常感激。

 public class Parent
 {
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }

    private List<Child> _children = new List<Child>();

    [Include]
    [Association("ParentChildRelation", "Id", "ParentId")]
    [Composition]
    public List<Child> Children
    {
        get { return _children; }
    }
} 
public class Child
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }

    private int _parentId;
    public int ParentId { get { return _parentId; } }

    private Parent _parent;        
    [Association("ParentChildRelation", "ParentId", "Id", IsForeignKey = true)]        
    public Parent Parent { get { return _parent; } set { _parent = value; _parentId = value.Id; } }
}
 [EnableClientAccess()]
public class PocoDomainService : DomainService
{
    public List<Parent> GetParents()
    {
        var list = new List<Parent>();
        list.AddRange(from p in Enumerable.Range(1, 5)
                      select (new Parent()
                      {
                          Name = "Parent " + p.ToString(),
                          Id = p
                      }));
        foreach (var p in list)
        {
            p.Children.AddRange(from c in Enumerable.Range(1, 3)
                                select (new Child()
                                {
                                    Id = c,
                                    Name = "Child " + c.ToString() + " From " + p.Name,
                                    Parent = p
                                }));
        }
        return list;
    }
}

2 个答案:

答案 0 :(得分:1)

问题出在我如何在域服务中创建集合。

我为每个父母的孩子使用相同的Child ID {1,2,3},每个孩子id都需要在所有孩子中独一无二。就像在数据库中一样。傻我。

答案 1 :(得分:0)

只是初步评论而不是更深入 - 你已经将两个不同的关联命名为相同。您可能需要使这些名称唯一。