Альтернатива использованию объекта в качестве параметра для метода вызова в службах WCF RIA

Привет! Первый вопрос по StackOverflow! : -)

Итак, вот сценарий: мы работаем над веб-приложением с Silverlight 4 и используем бета-версию WCF RIA Services 1.0 SP1 для веб-службы. У меня есть свои сущности в Entity Framework Designer, но я использую слегка измененный шаблон ADO.NET C # POCO Entity Generator для создания классов.

What I ' Я бы хотел иметь метод внутри доменной службы со следующей подписью:

[EnableClientAccess]
public class ResultService : DomainService
{
    [Invoke]
    public SerializableResult CalculateResult(EntityOne e1, EntityTwo e2);
}

Я возвращаю и EntityOne, и EntityTwo клиенту через запросы в других службах, например:

[EnableClientAccess]
public class EntityOneService : DomainService
{
    public IQueryable GetEntityOnes();
}

[EnableClientAccess]
public class EntityOneService : DomainService
{
    public IQueryable GetEntityTwos();
}

Эти классы - ] успешно создается в проекте Silverlight. У SerializableResult нет ключа.

Когда я пытаюсь выполнить компиляцию, я получаю следующую ошибку: «Операция с именем« CalculateResult »не соответствует требуемой подписи. Типы параметров должны быть сущностью или сложный тип, набор сложных типов или один из предопределенных сериализуемых типов. "

В моем исследовании наиболее полезная информация, которую я нашел, была в комментариях к этой публикации Джеффа Хэндли .

] Следует отметить, что Питер спросил в комментарии:

Я получаю ' не соответствует требуемой подписи ... 'ошибка компиляции, если мой сложный объект имеет атрибут [Key]. Когда я удаляю этот атрибут, я могу использовать объект как параметр для операции Invoke.

Ответ Джеффа:

Это сделано намеренно. Сложные объекты не могут иметь ключевых свойств. Если у вас есть Key, класс будет рассматриваться как Entity.

Таким образом, похоже, что любые дальнейшие попытки заставить мой метод работать будут тщетными. Однако мне было интересно, сталкивался ли кто-нибудь еще с этой проблемой и что они сделали для ее решения.

Большое спасибо!

7
задан Adam W. McKinley 23 November 2010 в 17:35
поделиться