2010-06-25 1 views
0

Я реализую приложение Silverlight с сервисом службы WCF RIA на стороне сервера, и я испытываю очень странное поведение.Служба RIA нуждается в фиктивных общедоступных, непривязанных методах для компиляции

На данный момент сервис очень прост и имеет только несколько методов, все из которых отмечены атрибутом [Invoke]. Эти методы являются чем-то вроде этого:

[Invoke] 
MyEntity DoWorkAndReturnEntity(string someParameter) 
{ 
    var entity = new MyEntity(); 
    //Do some preocessing... 
    return entity; 
} 

где MyEntity тип имеет одно общедоступное свойство с атрибутом [Key]:

public class MyEntity 
{ 
    [Key] 
    public int Key {get;set;} 
} 

Ну, если я пытаюсь скомпилировать решение, я получаю следующее сообщение об ошибке:

Operation named 'DoWorkAndReturnEntity' does not conform to the required signature. Return types must be an entity, collection of entities, or one of the predefined serializable types.

И теперь идет смешная часть. Если я добавлю публичный фиктивный метод, который возвращает объект того же типа, но имеет атрибут noInvoke, он компилируется и работает отлично!

public MyEntity __Dummy() 
{ 
    return null; 
} 

Это происходит со всеми методами, независимо от типа возвращаемого объекта. Поэтому я должен добавить фиктивный метод для каждого типа возвращаемого объекта.

Я полностью озадачен. Что здесь происходит?

ответ

1

Типы сущностей определяются набором методов запросов в службе домена.

Метод invoke не может вернуть тип сущности, если он не является одним из объектов, возвращаемых службой домена ... следовательно, метод __Dummy query делает работу.

0

WCF RIA Services использует конфигурацию, по-конвенции, ваш метод DoWorkAndReturnEntity должен быть оформлен с атрибутом [Query] или без атрибута на всех, так как [Query] по умолчанию так же, как в методе __Dummy.

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

  • Нет связанных вопросов^_^