Может ли DomainService вернуть один пользовательский тип? - PullRequest
3 голосов
/ 03 октября 2010

Я хотел бы, чтобы мой метод в моем домене служил так:

public SystemState GetSystemStatus()
{
    return new SystemStatus
    {
        InterestingStatusValue1 = 1223,
        OtherInterstingStatusValue = "abc",
    }
}

Это не работает. Ничего не генерируется автоматически для клиентского приложения Silverlight. Однако, если я сделаю этот метод IQueryable, я получу что-то сгенерированное на клиенте. Я получу свойство SystemStates и метод Query для объекта контекста.

Нет ли способа сделать этот простой вызов WCF? Я полагаю, я мог бы включить службу WCF Silverlight Enabled для моего веб-сайта RIA, а затем установить ссылку на службу (что не может быть правильным?) (И почему я не вижу ссылку на службу в приложении Silverlight?)

На первый взгляд кажется, что службы RIA требуют очень легкого CRUD, ориентированного на данные, что отлично подходит для редакторов таблиц, но не так много для LOB-приложений, которые идут за перетаскиванием сетки данных, и все готово.

1 Ответ

2 голосов
/ 04 октября 2010

Вы можете вернуть только одну сущность, используя атрибут (при условии, что SystemState является вашей сущностью):

Ex:

[Query(IsComposable = false)]
public SystemState GetSystemStatus()
{
    return new SystemStatus
    {
        InterestingStatusValue1 = 1223,
        OtherInterstingStatusValue = "abc",
    }
}

Помните, что это все еще запрос, и Ria Services сгенерирует метод в вашем DomainContext, например:

EntityQuery<SystemState> GetSystemStatusQuery()

Используйте его как обычный EntityQuery, но имейте в виду, что вы не можете выполнять операции запроса (сортировку или фильтрацию) с возвращенным объектом.

Если вы хотите выполнить операцию на сервере, попробуйте использовать атрибут [Invoke]. Пример:

[Invoke]
public SystemState GetSystemStatus()
{
    return new SystemStatus
    {
        InterestingStatusValue1 = 1223,
        OtherInterstingStatusValue = "abc",
    }
}

Я не знаю, насколько сложным может быть ваш тип возвращаемого значения, но, думаю, если он будет сериализован, он будет работать (не уверен).

...