C# 9.0 rekordy w DTO / VM

1

Cześć, mam małe pytanie.
Nie nie jestem pewien, czy dobrze odebrałem, że teraz w plikach DTO / VM powinno się stosować taki zapis:

Rekord:

namespace App.Dtos
{
    public record ProjectDetailsDTO(
        long Id,
        string Name,
        string Deadline,
        string Client,
        decimal Pricing,
        long? ClientId);
}

Tworzenie obiektu

    public ProjectDetailsDTO Get(long id)
    {
        // pobranie projektu z bazy
        var project = dbContext.Projects.Include(x => x.Client).SingleOrDefault(x => x.Id == id);

        return new(
            project.Id,
            project.Name,
            project.Deadline.ToString("dd-MM-yyyy"),
            project.Client != null ? project.Client.Name : string.Empty,
            project.Pricing,
            project.ClientId);
    }

zamiast dotychczas używanych klas z property i tworzeniem w sposób:

// [...]
        return new ProjectDetailsDto
        {
            Id = project.Id,
            Name = project.Name,
            Pricing = project.Pricing,
            ClientId = project.ClientId,
            Deadline = project.Deadline.ToString("dd-MM-yyyy"),
            Client = project.Client != null ? project.Client.Name : string.Empty
        };

3

"Powinno" to chyba za duże uogólnienie, ale wydaje mi się, że rekordy dobrze pasują do DTO/pojemników na dane.

2

To jest po prostu nowy sposób, nie rekomendacja. Wybór zależy od programisty. Rekordy niosą ze sobą pewne możliwości których do tej pory nie było- bardziej kompaktowa składnia (również przy używaniu właściwości dzięki słowu kluczowemu init), porównywanie przez wartość a nie referencję oraz operator with (taki odpowiednik spread z JS). To czy je stosować czy nie zależy od potrzeb.

1 użytkowników online, w tym zalogowanych: 0, gości: 1