RIA и POCOs Отношения между детьми и родителями не возвращают все данные - PullRequest
0 голосов
/ 26 января 2011

Я пытаюсь настроить проект POCO RIA Silverlight. Когда служба домена возвращает данные, отсутствуют данные.

Ниже я включил классы Parent / Child и мою службу домена. Он должен вернуть список из 5 родительских объектов, каждый из которых содержит 3 дочерних объекта. Я считаю, что настроил службу домена для правильного возврата дерева объектов, которое я желаю.

Служба домена возвращает 5 родительских объектов. Первый родительский объект правильно содержит 3 дочерних объекта.

Однако все последующие родительские объекты не содержат дочерних объектов. Я делаю что-то не так.

Я нашел несколько ресурсов, которые могли бы помочь, и, кажется, я следую их предписанным методам безрезультатно.

Ссылка 1 Ссылка 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 ]

1 голос
/ 26 января 2011

Проблема заключалась в том, как я создавал коллекцию в доменной службе.

Я использовал одинаковые идентификаторы Child {1, 2, 3} для каждого из родителей детей, каждый идентификатор должен был быть уникальным среди всех детей.Как это было бы в базе данных.Глупый я.

0 голосов
/ 26 января 2011

Просто начальный комментарий, не заглядывая глубже - вы назвали две разные ассоциации одинаковыми.Возможно, вам придется сделать эти имена уникальными.

...