Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как ограничить поля, возвращаемые из запроса служб Silverlight 4 RIA

Автор вопроса: Matt RuweОтветов: 2

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

TableA:
  ID
  Field1
  Field2
  Field3

TableB:
  ID
  TableAID (foreign key)
  Field1
  RestrictedField2

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

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

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

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

Обновить

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

  • Я также повторно разместил этот вопрос на форуме Silverlight и получил аналогичный ответ на свой ответ ниже: forum.silverlight.net/forums/p/227614/551503.aspx#551503 Matt Ruwe 02.05.2011

entity-framework-4wcf-ria-services

Ответы

Ответ 1 · рейтинг 1 · Adetokunbo Hakeem Ayoade

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

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

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

Ответ 2 · Matt Ruwe

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы