EF Core operacje CRUD na Navigation Properties

0

Cześć,
Mam takie pytanie w jaki sposób zarządzacie w EF operacjami CRUD na liście NavigationProperties?
Dla przykładu mamy obiekt User i UserParams, UserParams ma FK do User.
EF wygeneruje nam klasę User, która ma w sobie:

public virtual ICollection<UserParam> UserParams { get; set; }

W jaki sposób teraz poprawnie obsłużyć CRUD dla tych obiektów? Wykonywać operacje za każdym razem osobno? Czyli Wystawiam GET, Post, Put, Patch, Delete dla obu, ale wtedy mija się z celem ten navigation properties... Jeśli wystawie endpoint UpdateUser i chciałbym, żeby ten endpoint za jednym razem obsłużył mi zarówno User jak i UserParams z wykorzystaniem tego NapProp, to nie wiem które UserParam są nowe, modyfikowane, usunięte czy w ogóle nie tknięte, musiałbym mieć chyba w DTO lub już tych obiektach DB jakiś enum lub cokolwiek co mi powie jaki stan ma obiekt.
Jak rozwiązujecie takie sytuacje? Może jest lepszy sposób?

0

Takie coś nie działa?


// User entity
public class User
{
  public string Email { get; set; }
  public string Bar { get; set; }

  public ICollection<UserParam> Params { get; set; }
}

// UserParam entity
public class UserParam
{
  public int Id { get; set; }
  public string Foo { get; set; }
}

// User service
var user = dbContext.Users.FirstOrDefault(x => x.Email == email);
user.Bar = bar;

var userParam = user.Params.FirstOrDefault(x => x.Id == id);
userParam.Foo = foo;

dbContext.SaveChanges();

1

A to EF to nie jest czasem ORM? ORMy to chyba takie rzeczy jak śledzenie stanu obiektu załatwiają same.

No i mieszasz chyba dwa tematy - to jak sobie zaprojektujesz API nie powinno mieć wpływu na sposób przechowywania i odwrotnie.

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