Отправка пользовательских сложных объектов в службы Silverlight RIA - PullRequest
0 голосов
/ 03 октября 2011

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

Пример:

public class MyClass1
{
    private List<MyClass2> myClass2List

    [Key]
    public long Id { get; set; }

    public string Name { get; set; }

    [Include]
    [Association("FK_MyClass1_MyClass2", "Id", "MyClass1Id")]
    public List<MyClass2> MyClass2List
    {
        get
        {
            if (this.myClass2List == null)
            {
                this.myClass2List = new List<MyClass2>();
            }

            return this.myClass2List;
        }
        set { this.myClass2List = value; }
    }
}

public class MyClass2
{
    [Key]
    public long Id { get; set; }

    public string Value { get; set; }

    public long MyClass1Id { get; set; }
}

Теперь я хочу отправить экземпляр MyClass1 (который заполнен MyClass2List) службам RIA.

Моей первой попыткой было создание метода get с возвращаемым типом MyClass1 (для предоставления MyClass1), а также создание метода Insert для MyClass1 и MyClass2. Это работает, но метод MyClass2 Insert бесполезен! Я вставляю всю информацию в метод MyClass1. Также метод get бесполезен!

Это служба домена, которая работает:

[EnableClientAccess]
public class MyDomainService : DomainService
{
    public MyClass1 GetMyClass1()
    {
        return null;
    }

    [Insert]
    public void Insert(MyClass1 myClass1)
    {
        ... (Main code)
    }

    [Insert]
    public void Insert(MyClass2 myClass2)
    {
        // I leave this method empty because I do the job in MyClass1 Insert method.
        // If I don't add this method the Add operation on MyClass2List will not work!
    }
}

Как вы видите, он не имеет четкой реализации. Хотя я мог бы использовать традиционные службы WCF с поддержкой Silverlight и просто использовать один метод для вставки экземпляра MyClass1.

Обратите внимание, что я попробовал метод [Invoke] (простой метод вызова, который дает MyClass1 в качестве входного параметра), но затем MyClass1.MyClass2List пусто !!!

Как я могу отправить сложный объект в службы RIA, не имея таких бесполезных методов и грязной реализации? Мне нужно сделать все мои работы только в одном методе. Мне не нужно отслеживать и т. Д. Здесь. Лучше использовать традиционные сервисы WCF помимо RIA или есть другой способ в отношении RIA?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 10 октября 2011
  • Вам также необходимо добавить атрибут [Композиция] в ваши отношения «один ко многим».дополнительная информация: [+ , + , +]
  • Также попробуйте переключиться на " Служба RIA EF Code First Support"
0 голосов
/ 03 октября 2011

На клиенте вы просто вызываете SubmitChanges в контексте домена. Затем RIA вызывает подходящие для вас методы вставки.

...