Список объектов всегда пуст при передаче в метод доменной службы - PullRequest
0 голосов
/ 23 февраля 2011

Я почти сошел с ума. Я не понимаю, чего мне не хватает.

Вот мои настройки:

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

Я добавил методы вставки / обновления / удаления для классов TestClass и TestList.

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

1 Ответ

0 голосов
/ 24 февраля 2011

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

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

...