選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

IUserRepository.cs 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using ProRestaurant.DBContexts;
  2. using ProRestaurant.Models.Accounts;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. namespace ProRestaurant.Repository.Accounts
  7. {
  8. public interface IUserRepository
  9. {
  10. ICollection<User> Get(Func<User, bool> where);
  11. User GetUser(int UserId);
  12. UserAddress GetUserAddress(int UserId);
  13. void Update(User user);
  14. void Save();
  15. }
  16. public class UserRepository : IUserRepository
  17. {
  18. private readonly DBContext dbContext;
  19. public UserRepository(DBContext _db)
  20. {
  21. dbContext = _db;
  22. }
  23. public ICollection<User> Get(Func<User, bool> where)
  24. {
  25. return dbContext.Users.Where(where).ToList();
  26. }
  27. public User GetUser(int UserId)
  28. {
  29. return dbContext.Users.Where(u => u.Id == UserId).FirstOrDefault();
  30. }
  31. public UserAddress GetUserAddress(int UserId)
  32. {
  33. var address = dbContext.UserAddresses.Where(a => a.UserId == UserId).FirstOrDefault();
  34. return address;
  35. }
  36. public void Save()
  37. {
  38. dbContext.SaveChanges();
  39. }
  40. public void Update(User user)
  41. {
  42. if (user.Addresses != null && user.Addresses.Count > 0)
  43. {
  44. foreach(var address in user.Addresses)
  45. {
  46. if (address.Id == 0)
  47. {
  48. dbContext.Add(address);
  49. Save();
  50. }
  51. }
  52. }
  53. dbContext.Entry(user).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
  54. Save();
  55. }
  56. }
  57. }