如何包含单个用户的交易

我正在尝试获取一个用户,包括他来自另一个表的所有交易。用户和交易之间存在一对多的关系。当我获得用户时,如何包含我的交易?


public class User{

        [Key]

        public int id{get;set;}

        public string FirstName{get;set;}

        public string LastName{get;set;}

        public string Email{get;set;}

        public string Password{get;set;}

        public DateTime CreatedAt{get;set;} = DateTime.Now;

        public DateTime UpdatedAt{get;set;} = DateTime.Now;

        public List<Transaction> Transactions{get;set;}


        [NotMapped]

        public string ConfirmPassword{get;set;}

    }


#Controller

[HttpGet("account")]

        public IActionResult Account(){

            User user = context.Users.FirstOrDefault(u => u.id == HttpContext.Session.GetInt32("user"))

                .Include(u => u.Transactions);


            return View("account", user);

        }

我只是希望在传递到视图时将交易包含在用户中。我不明白该怎么做。现在它告诉我“用户不包含包含的定义”我该如何完成此操作?


慕尼黑8549860
浏览 72回答 1
1回答

慕姐8265434

解决方案 1:在 IQueryable 上执行查询之前,必须包含相关表,如下所示:var userId = HttpContext.Session.GetInt32("user");User user = _context.Users.Where(u => u.id == userId)&nbsp; &nbsp; .Include(u => u.Transactions)&nbsp; &nbsp; .AsNoTracking()&nbsp; &nbsp; .FirstOrDefault();解决方案 2:您可以选择具有该用户交易列表的用户,如下所示:var userId = HttpContext.Session.GetInt32("user");User user = _context.Users&nbsp; &nbsp; .AsNoTracking()&nbsp; &nbsp; .Where(u => u.id == userId)&nbsp; &nbsp; .Select(u => new User&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; //Select all properties like this :&nbsp; &nbsp; &nbsp; &nbsp; FirstName = u.FirstName,&nbsp; &nbsp; &nbsp; &nbsp; LastName = u.LastName,&nbsp; &nbsp; &nbsp; &nbsp; //... Other properties,&nbsp; &nbsp; &nbsp; &nbsp; Transactions = u.TransActions.Select(t => new TransationViewModel&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Select all properties like this :&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Name = t.Name&nbsp; &nbsp; &nbsp; &nbsp; }).ToList()&nbsp; &nbsp; })&nbsp; &nbsp; .FirstOrDefault();
打开App,查看更多内容
随时随地看视频慕课网APP