簡體   English   中英

ASP .NET Core MVC - 如何在 model ZA2F2ED4F8EBC2CBB4C21A29DC40 關系中初始化 object 屬性?

[英]ASP .NET Core MVC - How to initialize an object property in a model class which is a result of many-to-many relationship?

當我想從 TripApplicationUser model class 調用我的 object 屬性 Trip 的屬性時,它的值為 Z37A6259CC60C1DAE299DZA。 所以我不知道如何初始化 Trip object 以便稍后獲取其屬性值,並且現在在數據庫中進行索引時遇到問題。 我在這里粘貼了代碼中最重要的部分。

[Authorize]
    public async Task<ActionResult> Enroll(int id)
    {
        if (id == null)
        {
            return NotFound();
        }
        var currentTrip = await _context.Trip.FindAsync(id);
        var currentUser = await _userManager.GetUserAsync(User);
        var isAlreadyEnrolled = _context.TripApplicationUsers.Where(tu => tu.ApplicationUserId.Equals(currentUser.Id) && tu.TripId == id);
        var UserTrips = isAlreadyEnrolled.ToList();
        if (currentTrip.TripSeats > 0 && !UserTrips.Any())
        {
            ViewBag.process = "done";
            currentTrip.TripSeats--;
            _context.Update(currentTrip);

            var rowToSave = new TripApplicationUser
            {
                TripId = currentTrip.TripId,
                ApplicationUserId = currentUser.Id,
                Trip = currentTrip //HOW SHOULD I INITIALIZE IT ACTUALLY?
            };
            _context.Add(rowToSave);
            await _context.SaveChangesAsync();
        } else if (UserTrips.Any())
        {
            ViewBag.process = "already done";
        } else if(currentTrip.TripSeats <= 0)
        {
            ViewBag.process = "not done";
        }
        var UsersTrips = _context.TripApplicationUsers.Where(t => t.ApplicationUserId.Equals(currentUser.Id)).ToList();  
        return View(UsersTrips);
    }

public class ApplicationUser : IdentityUser
    {
        [PersonalData]
        [Column(TypeName = "nvarchar(MAX)")]
        public string FirstName { get; set; }
        [PersonalData]
        [Column(TypeName = "nvarchar(MAX)")]
        public string Surname { get; set; }
        [PersonalData]
        [Column(TypeName = "nvarchar(MAX)")]
        public string BirthDate { get; set; }

        public ICollection<TripApplicationUser> TripApplicationUsers { get; set; }
    }
public class Trip
    {
        public int TripId { get; set; }
        public string TripDate { get; set; }
        public int TripDuration { get; set; }
        public int TripLength { get; set; }
        public int TripSeats { get; set; }

        public int TrailId { get; set; }
        public Trail Trail { get; set; }


        public ICollection<TripApplicationUser> TripApplicationUsers { get; set; }
    }

public class TripApplicationUser
    {
        public int TripId { get; set; }
        public Trip Trip { get; set; }
        public string ApplicationUserId { get; set; }
        public ApplicationUser ApplicationUser { get; set; }
    }

如果您希望您的行程 object 包含來自導航屬性的數據,您必須將它們包含在請求中。

var currentTrip = await _context.Trip.Include(trip=> trip.TripApplicationUsers).FirstOrDefaultAsync(trip => trip.TripId == id);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM