为了账号安全,请及时绑定邮箱和手机立即绑定

如何包含单个用户的交易

如何包含单个用户的交易

C#
慕尼黑8549860 2023-08-20 15:26:10
我正在尝试获取一个用户,包括他来自另一个表的所有交易。用户和交易之间存在一对多的关系。当我获得用户时,如何包含我的交易?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);        }我只是希望在传递到视图时将交易包含在用户中。我不明白该怎么做。现在它告诉我“用户不包含包含的定义”我该如何完成此操作?
查看完整描述

1 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

解决方案 1:在 IQueryable 上执行查询之前,必须包含相关表,如下所示:


var userId = HttpContext.Session.GetInt32("user");


User user = _context.Users.Where(u => u.id == userId)

    .Include(u => u.Transactions)

    .AsNoTracking()

    .FirstOrDefault();

解决方案 2:您可以选择具有该用户交易列表的用户,如下所示:


var userId = HttpContext.Session.GetInt32("user");


User user = _context.Users

    .AsNoTracking()

    .Where(u => u.id == userId)

    .Select(u => new User

    {

        //Select all properties like this :

        FirstName = u.FirstName,

        LastName = u.LastName,

        //... Other properties,

        Transactions = u.TransActions.Select(t => new TransationViewModel

        {

            //Select all properties like this :

            //Name = t.Name

        }).ToList()

    })

    .FirstOrDefault();


查看完整回答
反对 回复 2023-08-20
  • 1 回答
  • 0 关注
  • 69 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信