Запрос RIA Services: вложенный "from" и включает детей - PullRequest
1 голос
/ 02 апреля 2010

У меня есть следующая схема .

Что я хотел бы сделать, это получить всех клиентов (и дочерние свойства) из выбранного StaffAdignment по StaffId.

Итак, я написал следующий запрос:

from c in ObjectContext.Customers.Include("Assignments.Activities")
               from a in c.Assignments
               from sa in a.StaffAssignments
               where sa.StaffId == staffId
               select c

Но дочерние свойства не загружаются (я также добавил [Включить] в файл метаданных службы).

Что я сделал не так?

ГТЦ, Stéphane.

1 Ответ

0 голосов
/ 12 августа 2010

У меня была такая же проблема.

Это моя модель (взято из NorthWind)

альтернативный текст http://i33.tinypic.com/5k0g3n.png

А DomainService выглядит так:

[EnableClientAccess()]
public class DomainService1 : LinqToEntitiesDomainService<AdventureWorksLT2008Entities>
{
    public IQueryable<Customer> GetCustomer()
    {
        return this.ObjectContext.Customer.Include("CustomerAddress").Include("CustomerAddress.Address");
    }
}

Я добавил атрибуты [Включить] во все свойства навигации:

public partial class Customer
{
    internal sealed class CustomerMetadata
    {
        // Metadata classes are not meant to be instantiated.
        private CustomerMetadata() { }

        public string CompanyName { get; set; }

        [Include]
        public EntityCollection<CustomerAddress> CustomerAddress { get; set; }


И в коде клиента я использую это:

var dc = new MyDomainContext();

var query = dc.GetCustomerQuery();

var op = dc.Load(query, loadOperation =>
{
    var customer = loadOperation.Entities.FirstOrDefault();
    var address = customer.CustomerAddress.FirstOrDefault().Address;
}, null);


Обратите внимание, что это работает только когда:

  • ObjectContext автоматически генерируется EntityFramework (без пользовательских контекста или объектов Poco)
  • DomainService является 'LinqToEntitiesDomainService'

См. Также эту ссылку .

...