Silverlight 4 с услугами RIA - PullRequest
       3

Silverlight 4 с услугами RIA

0 голосов
/ 21 декабря 2011

Я новичок в службах Silverlight RIA, и у меня есть базовый рабочий прототип, который использует службы RIA с EntityFramework. Теперь, когда я перешел к реальному проекту, мне интересно, как использовать не-EntityFramework объекты, но все еще использовать элементы управления RIA, такие как System.Windows.Controls.DomainServices.DomainDataSource, чтобы я мог разбивать на страницы и т. Д. Например, в мой рабочий прототип, у меня есть:

[EnableClientAccess()]
public class RequestService : LinqToEntitiesDomainService<MyEntities>
{
    public IQueryable<RequestData> GetRequests()
    {
        ... LINQ query removed ...
    }
}

Когда я изменяю IQueryable на IQueryable , где MyRequestData - это пользовательский открытый класс, который я создал (и преобразовываю данные Entity в), а затем перестраиваю приложение, клиентское приложение Silverlight больше не видит запрос (ошибки сборки ).

Итак, мой вопрос: как я могу использовать эти пользовательские объекты аналогично объектам EntityFramework, чтобы я все еще мог применять нумерацию страниц и т. Д.?

1 Ответ

0 голосов
/ 21 декабря 2011

Вы можете создать класс POCO и назначить атрибут Key одному из его свойств, например так ...

public class MyClass
{
    [Key]
    public string Name { get; set; }
    public int Age { get; set; }
}

Затем вы можете создать класс DomainService, содержащий способ получить класс POCO следующим образом ...

[EnableClientAccess()]
public class DomainService1 : DomainService
{
    public List<MyClass> GetData()
    {
        return new List<MyClass>(){new MyClass{Name = "Henry", Age = 33}};
    }
}

Этот метод возвращает список MyClass с одним элементом в нем. Но вы можете вернуть почти все.

Затем на стороне клиента вы можете вызвать доменную службу следующим образом ...

 public MainPage()
        {
            InitializeComponent();
            DomainService1 ds1 = new DomainService1();
            var x = ds1.Load(ds1.GetDataQuery());
            x.Completed += new EventHandler(x_Completed);
        }
        void x_Completed(object sender, EventArgs e)
        {
            // process the results here
        }

В обратном вызове события вы можете привести аргумент отправителя к LoadOperation и получить нужные данные ...

Хитрость заключается в использовании атрибута «Ключ». Это заставляет все это работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...