2011-12-21 4 views
0

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

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

Когда я изменяю IQueryable <RequestData> в IQueryable <MyRequestData> где MyRequestData обычай общественного класса я создал (и преобразования данных сущностей в), а затем восстановить из приложения, клиентское приложение Silverlight больше не видит запрос (ошибки сборки).

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

ответ

0

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

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 и получить данные, которые вы хотели ...

Уловка исходит из атрибута «Ключ». Это заставляет все это работать.

+0

Это именно то, что я искал. Во всех поисковых поисковых системах я ничего не нашел о объектах POCO. Я думаю, что в первую очередь потому, что все сайты сосредоточены в EntityFramework, NHibernate и т. Д. – guyaton

+0

Я рад, что это было полезно. У меня было много вопросов, которые начались в SL RIA. Обязательно подтвердите ответ, чтобы люди знали, что вы удовлетворены ответом. –

+0

Я бы ... если бы у меня было 15 репутации ... Это только моя вторая публикация времени в stackoverflow. – guyaton

Смежные вопросы