Создание 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, что просто не даёт дойти не верным данным до уровня домена


Ответы (0 шт):