.Net Webapi с использованием Odata v4 и viewmodels - PullRequest
0 голосов
/ 22 мая 2019

Я только начал работать с Odata, и должен сказать, что мне это очень нравится.$ fetch, $ select, $ expand и т. д. просто потрясающие.Тем не менее, я не совсем понимаю, как привязать оддату к моделям представления.Одна из причин, по которой я заинтересован в формировании данных, заключается в том, что odata, похоже, не поддерживает скрытие / игнорирование свойств.Я также не верю в предоставление клиенту большего количества информации, чем необходимо в то время.

Например, вы создаете объект пользователя, который включает поле пароля.

public class User
{
    public string FirstName { get; set; }
    public string LastName{ get; set; }
    public string Email { get; set; }
    public string UserName { get; set; }
    public string Password { get; set; } 
}

Но вам нужно предоставить список ваших пользователей.Естественно, вы не хотели бы перечислять поле пароля.Вы можете программно исключить это поле, выполнив что-то вроде:

var users= modelBuilder.EntitySet<User>("Users");
 users.EntityType.Ignore(usr => usr.password);

Или вы можете украсить его в самом классе:

[IgnoreDataMember]
public string Password { get; set; } // Not visible in the EDM

Проблема в том, что оба они влияют на модель в глобальноммода, если я понимаю, что происходит правильно.

Итак, если пользователю, например, необходимо изменить свой пароль, у него теперь нет возможности сделать это с помощью класса User.

Это такжеКажется, что если я реализую модели представления, я нарушу многие функции, которые предоставляет odata.

Как я уже говорил, я новичок в odata и просто не могу понять, как формировать данные для клиента.

Будем благодарны за любые указания, которые могут быть предоставлены.

1 Ответ

0 голосов
/ 22 мая 2019

Как вы упомянули, лучше не скрывать поле пароля, так как оно является действительным полем пользователя. Что вам нужно, это ввести / определить разрешения в вашей модели данных. Чтобы объекты / поля показывались только авторизованным пользователям.

...