У меня есть следующая модель БД:
**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; }
}
Состояние может быть использовано в доменной логике, например ::1007*
if(person.State == State.Working)
// some logic
Итак, насколько я понимаю, State действует как объект значения, который используется для проверки логики домена. Но он также должен присутствовать в модели БД для представления чистого 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