Aktywne Wpisy
#primemma NOWY LINK DO PRIME MAM LIMIT WIADOMOŚĆI W KOMENTARZU MOGE WYSŁAC LINKA

OsraneMajtyXD +48
źródło: temp_file5921212382815663564
PobierzSkopiuj link
Skopiuj link
źródło: temp_file5921212382815663564
PobierzWykop.pl
Robię swój pierwszy webowy projekt z wykorzystaniem ASP.NET Core, staram się robić go według DDD. Zastanawiam się jak powinien zaimplementować repozytoria dla relacji wielu do wielu, czyli UserReviewApproved i UserReviewDisapproved. Póki co umieściłem metody w repozytorium dla Reviews, jedna z funkcji wygląda tak:
public async Task AddUserReviewApprovedAsync(Guid userId, Guid reviewId){
var user = await _userRepository.GetByIdAsync(userId);
if (user == null)
return;
var review = await GetByIdAsync(reviewId);
if (review == null)
return;
var reviewUserApproved = new ReviewUserApproved(user, review);
_context.ReviewUserApproved.Add(reviewUserApproved);
await _context.SaveChangesAsync();
}
I tutaj pojawiają się pytania o poprawnej takiego rozwiązania. A więc:
1. Czy dla UserReviewApproved i UserReviewDisapproved powinienem stworzyć nowe repozytoria.
2. Czy poprawne wzajemne wykorzystywanie się repozytoriów tak jak w przykładzie z walidacją nulla przy userze.
3. Jeśli nie to jak mam walidować nulle, w repozytoriach, serwisach (przesyłanie gotowych obiektów do repozytorium) czy może po prostu zdać się na bazę danych (not null).
źródło: comment_MuU80q0T680gMNYqWp6eNI8jFa1S6ze6.jpg
PobierzTak więc repo:
public async Task AddUserReviewApprovedAsync(Guid userId, Guid
To wyżej tyczy się repo, bo walidację tak jak napisałem robisz poziom niżej w serwisie/kontrolerze i zwracasz odpowiednie kody błędów, żeby klient wiedział co się dzieje. Jeżeli
public async Task GetByIdWithoutOpinionsAsync(Guid id){
var review = await _context.Reviews.Include(c => c.User).Include(c=>c.Course)
.SingleOrDefaultAsync(c => c.Id