Создание Entity-сущности в Backend приложении на ASP.NET Core с использованием чистой архитектуры
Начал осваивать чистую архитектуру и не могу понять как правильно писать сущности в нём. Первый пример:
public class ToDoItem
{
public Guid Id { get; set; } = Guid.NewGuid();
public string Title { get; set; } = string.Empty;
public bool IsCompleted { get; set; } = false;
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}
Второй пример:
public class ToDoItem
{
public Guid Id { get; private set; } = Guid.NewGuid();
public string Title { get; private set; }
public bool IsCompleted { get; private set; }
public DateTime CreatedAt { get; private set; } = DateTime.UtcNow;
public ToDoItem(string title)
{
Title = title;
}
public void Rename(string newTitle) => Title = newTitle;
public void MarkDone() => IsCompleted = true;
public void MarkUndone() => IsCompleted = false;
}
Видел иногда пишут как на втором примере, обосновывая тем, что при таком подходе можно встроить валидацию. Но если в проекте и так используется FluentValidation, что просто не даёт дойти не верным данным до уровня домена