.net 为什么我无法将项目添加到用户实体列表中?

68bkxrlz  于 2022-11-26  发布在  .NET
关注(0)|答案(1)|浏览(139)

因此,基本上我希望创建一个功能,用户可以在其中将产品添加到其产品列表并将其保存到数据库。我的用户实体和产品实体具有一对多关系。我的计划是获取用户并检查用户是否登录(如果用户不为空),如果为空,则用户可以创建新的产品实体,并将其添加到用户的Product[]中,然后将其保存在数据库中。问题是,当我想把创建的产品添加到列表中时,我得到了ArgumentNullException。如何克服这个问题?有什么提示吗?

public class User
{
    public int Id { get; set; }
    public string UserName { get; set; }
    public Product[] Products { get; set; }
}

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public User User { get; set; }
    public int UserId { get; set; }
}

    [HttpPost("CreateAndAddProduct")]
    public async Task<ActionResult<Product[]>> AddProduct(string User)
    {
        ProductModel productModel=new ProductModel();

        User user= await _context.Users.Where(x=>x.UserName==User).FirstOrDefaultAsync();
        Product[] userList = u.Products;

        if(user!=null)
        {
           var product = new Product
           {
                Name = "gloves",
                UserId = user.Id
           };
           userList.Append(product); // here im getting ArgumentNullException
           await _context.SaveChangesAsync();
        }

        return userList;
     }
htrmnn0y

htrmnn0y1#

由于这是一个1到N的关系,您需要在查询中包含Products,以便EF在数据库中进行连接。

User user= await _context.Users
    .Where(x => x.UserName == User)
    .Include(x => x.Products)
    .FirstOrDefaultAsync();

相关问题