Хорошая практика для установки вычисляемых свойств - PullRequest
0 голосов
/ 05 апреля 2020

Мне интересно, что такое «хорошая практика» для установки свойств, которые не отображаются в базе данных. Я работаю с EF Core, но это действительно больше вопрос дизайна. Представьте, что у меня есть следующий класс:

class User
{

   public string FirstName { get; set; }
   public string LastName { get; set; }

   [NotMapped]
   public string Name { get; set; }

   ...

}

Где Name будет вычислено после извлечения FirstName и LastName из базы данных. Я пытаюсь предотвратить вызов метода получения для Name без предварительной установки свойства.

Я знаю, что мог бы сделать что-то вроде

class User
{
   ...

   private string _name = null;

   [NotMapped]
   public string Name { 

     get 
     {
        if (_name == null)
          _name = $"{FirstName} {LastName}";
        return _name;
     }

   }
   ...
}

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

На данный момент я написал функцию SetAllProperties(), которая устанавливает все свойства NotMapped, однако я не считаю это хорошим решение, поскольку существует риск забыть

  1. обновить его при добавлении новых свойств NotMapped
  2. чтобы вызвать его перед доступом к свойствам

Is интерфейс есть способ go? Как это должно выглядеть? Или есть какой-то "стандартный" способ борьбы с этим? Я не смог найти ничего полезного в этом топи c.

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