У меня есть следующая модель DB:
**Person table**
ID | Name | StateId
------------------------------
1 Joe 1
2 Peter 1
3 John 2
**State table**
ID | Desc
------------------------------
1 Working
2 Vacation
и модель домена была бы (упрощена):
public class Person
{
public int Id { get; }
public string Name { get; set; }
public State State { get; set; }
}
public class State
{
private int id;
public string Name { get; set; }
}
Состояние может использоваться в логике домена, например:
if(person.State == State.Working)
// some logic
Итак, из моего понимания, государство действует как объект ценности, который используется для проверки логики домена. Но он также должен присутствовать в модели БД для представления чистой ERM.
Таким образом, состояние может быть расширено:
public class State
{
private int id;
public string Name { get; set; }
public static State New {get {return new State([hardCodedIdHere?], [hardCodeNameHere?]);}}
}
Но используя этот подход, имя состояния будет жестко закодировано в домене.
Вы знаете, что я имею в виду? Существует ли стандартный подход к подобным вещам? С моей точки зрения, что я пытаюсь сделать, это использовать объект (который сохраняется с точки зрения дизайна ERM) как своего рода объект ценности в моем домене. Как вы думаете?
Обновление вопроса: Вероятно, мой вопрос был недостаточно ясным.
Мне нужно знать, как бы я использовал объект (например, пример состояния), который хранится в базе данных в моей логике домена. Чтобы избежать таких вещей, как:
if(person.State.Id == State.Working.Id)
// some logic
или
if(person.State.Id == WORKING_ID)
// some logic