我正在尝试获取一个用户,包括另一个表中的所有交易。用户和交易之间存在一对多的关系。获取用户后如何包括交易?
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);
}
Run Code Online (Sandbox Code Playgroud)
我只希望将事务传递给视图时包括在用户中。我不知道该怎么做。现在,它告诉我“用户不包含include的定义”如何实现?
解决方案1:在IQueryable上执行查询之前,必须包括相关表,如下所示:
var userId = HttpContext.Session.GetInt32("user");
User user = _context.Users.Where(u => u.id == userId)
.Include(u => u.Transactions)
.AsNoTracking()
.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
解决方案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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |