Как ограничить поля, возвращаемые запросом сервисов Silverlight 4 RIA - PullRequest
1 голос
/ 28 апреля 2011

Я использую службы RIA с Silverlight 4 и хотел бы ограничить поля, возвращаемые из службы.Например:

TableA:
  ID
  Field1
  Field2
  Field3

TableB:
  ID
  TableAID (foreign key)
  Field1
  RestrictedField2

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

<RequiresAuthentication()>
Public Function GetTableA() As IQueryable(Of TableA)
    Return Me.ObjectContext.TableA.Include("TableB")
End Function

Мой вопрос: как получить все столбцы из TableA, а также получить Field1 из TableB, не возвращая RestrictedField2?Я почти уверен, что это можно сделать из-за какой-то изворотливости Linq, но я не совсем уверен, как.

Спасибо!Мэтт

Обновление

Одно требование, которое я не перечислил выше.Столбец должен быть удален на стороне сервера, поскольку данные в RestrictedField1 не могут быть отправлены клиенту.Кроме того, мне нужно будет использовать это поле в другом методе доменной службы (защищенном с помощью requireRoleAttribute), чтобы я мог предоставить эту информацию администратору.Это требование означает, что я не хочу создавать другой сложный тип и возвращать его.Я бы предпочел продолжить работу с типом модели EF.

Ответы [ 2 ]

1 голос
/ 09 июня 2011

Проверьте эту ссылку, я думаю, что она может решить вашу проблему без необходимости просмотра модели

http://social.msdn.microsoft.com/Forums/en/adodotnetentityframework/thread/ab7b251a-ded0-487e-97a9-

Похоже, вы можете вернуть анонимный тип, а затем преобразовать его в нужныйтипа.

0 голосов
/ 01 мая 2011

Исходя из некоторой информации, которую я нашел, лучший способ выполнить то, что мне нужно, - это создать представление в базе данных и предоставить нужные мне данные с помощью EF и RIA Services.Похоже, это лучшее из доступных решений.

...