Есть ли способ сохранить вашу сущность в чистоте? - PullRequest
2 голосов
/ 30 марта 2012

проблема Допустим, у нас есть сущность Person:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Password { get; set; }
    public string Email { get; set; }
    public bool IsAdmin { get; set; }
}

Довольно просто, ничего особенного здесь не видно. Теперь, когда у нас есть эта сущность, мы хотим заполнить ее данными. Мы собираемся создать нового «человека». Мы могли бы просто вернуть эту сущность на наш взгляд, чтобы мы могли заполнить ее данными и сохранить все целиком. Но это приводит к многочисленным проблемам:

Возможно, мы не хотим, чтобы пользователь выбирал свой идентификатор. Мы хотим, чтобы пользователь подтвердил свой пароль, поэтому нам, вероятно, понадобятся 2 поля пароля. Мы не хотим, чтобы пользователь выбирал, хочет ли он быть администратором или нет (хотя это может привести к некоторым интересным экспериментам) Если мы изменяем нашу базу данных (и, следовательно, сущности), наши формы будут опираться на сущности, которые отличаются от тех, которые мы изначально планировали.

Ответы [ 2 ]

1 голос
/ 30 марта 2012

О чем идет речь, это шаблон MVVM, обычно используемый в WPF

У вас должен быть объект модели для View: ViewModel и модель объекта для Model: модель

Это может быть инкапсулировано во ViewModel, как

public class PersonViewModel
{
   Person _person = new Person(); 
   public string PasswordUser {get;set;}
   public string PasswordConfirm {get;set;}   

  public string Name 
  {
     get{ return _person.Name};      //I assume Person has a Name property
     set {_person.Name = value; }
  }

  ...
  ....

}
0 голосов
/ 30 марта 2012

Инкапсулируйте объект в модель представления. Модель представления дополняет сущность дополнительными полями и поведением, особенно необходимыми представлению. В этом случае он будет включать поле подтверждения пароля и соответствующую логику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...