Список объектов всегда пуст при переходе к методу службы домена

Я в значительной степени в своем остроумии здесь. Я не понимаю, чего мне не хватает.

Вот моя установка:

    [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, надеясь, что она решит мои проблемы. Это не так. Я попытался переместить свой список в свой собственный класс-оболочку и передать его в качестве второго параметра (найдено здесь). Я попытался создать фиктивные методы получения для моего объекта Class2, как я нашел в других сообщениях здесь.

Ничего не работает, и я расстраиваюсь.

Любые предложения будут ценны. Я чувствую, что просто делаю случайные изменения в надежде, что что-то сработает.

Спасибо.

Изменить: Хорошо, сегодня я вернулся к основам. Вот мои классы:

    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)

Я добавил методы Insert/Update/Delete для классов TestClass и TestList.

Кто-нибудь знает, что мне не хватает?


person Tyanna    schedule 23.02.2011    source источник
comment
Просто чтобы уточнить - ваши объекты Class1 и Class2 происходят из службы домена? или это ваши собственные классы, которые вы используете RIA для переноса в свой клиент Silverlight?   -  person Rus    schedule 23.02.2011
comment
@Rus - это мои собственные классы, которые я использую RIA для передачи своему клиенту Silverlight.   -  person Tyanna    schedule 24.02.2011


Ответы (1)


Сообщение в блоге здесь и здесь Думаю поможет. Он показывает, как разметить ваши объекты, чтобы передать их по проводу.

Я собрал простое демонстрационное приложение, которое вы можете скачать здесь< /а>. Приложение демонстрирует передачу объекта с набором дочерних объектов от клиента Silverlight по сети в доменную службу RIA.

person Rus    schedule 23.02.2011
comment
Я просмотрел ваши ссылки и добавил в методы Insert/Update/Delete в моей доменной службе для объекта Class2. Я снова побежал и нет. В моем приложении Silverlight я вызываю объект сохранения следующим образом: var save = _context.SaveObject(changedObject); Когда я вызываю это, PierList заполняется. Когда я достигаю точки останова в методе SaveObject, PierList пуст. Очень жаль, что этот список не проходит. Это то, что вы ожидаете сделать без дополнительной работы. :( - person Tyanna; 24.02.2011
comment
Тианна. Я собираю пример приложения, которое делает то, что вы ищете. У меня скоро будет для вас ссылка. - person Rus; 25.02.2011
comment
Спасибо большое за помощь! Я добавил редактирование с тем, что я пробовал сегодня. Должно быть легче следовать (надеюсь). - person Tyanna; 25.02.2011
comment
Тианна – Демонстрационное приложение помогло? Ваше решение работает сейчас. - person Rus; 02.03.2011
comment
Я не видел ни вашего обновления, ни вашего ответа здесь. Прости! Я еще не смотрел на ваше решение, но я буду. Я нашел способ обойти это, добавив метод SaveItems в мою доменную службу, который хранил список объектов в сеансе, пока я не вызвал метод SaveObject для сохранения родительского объекта. Это было некрасиво, но это сработало. - person Tyanna; 06.04.2011