.net 如何将productDto添加到用户的产品数组中?

ljo96ir5  于 2022-12-30  发布在  .NET
关注(0)|答案(2)|浏览(145)

所以基本上我的想法是每个添加到数据库的产品都应该有它的名称,price和创建它的用户的名称分配给它。我正在获取用户并检查用户是否存在于数据库中。如果他正在创建新产品,即productD to instance。最后,当我想将新产品添加到用户的实体Product List时,我出现了一个问题,即“您无法从ProductDto转换为产品实体””。如何解决此问题?有任何提示吗?

public async Task < ActionResult < ProductDto[] >> AddProduct(string username,
  ProductDto productDto) {

  User u = await _context.Users
    .Where(x => x.UserName == username)
    .Include(x => x.Products)
    .SingleOrDefaultAsync();

  if (u != null) {
    var product = new ProductDto {
      Name = productDto.Name,
        Price = productDto.Price,
        Username = u.UserName
    };
    u.Products.Add(product); // Im getting problem here
    await _context.SaveChangesAsync();
  }
  return u.Products.ToArray();
}

以下是我的实体:

public class User : BaseEntity
{
    public string UserName { get; set; }
    public List<Product> Products { get; set; }
}

public class Product : BaseEntity
{
    public string Name { get; set; }
    public decimal Price { get; set ;}
    public User User { get; set; }
    public int UserId { get; set; }
}

public class ProductDto
{
    public string Name { get; set; }
    public string Username { get; set; }
    public decimal Price { get; set; }
}
bnlyeluc

bnlyeluc1#

问题是u.ProductsProduct实体的列表。因此,您无法向其中添加ProductDto。因此,您需要像这样更改代码。创建一个新的Product实体,并根据ProductDto中的值设置值。

var product = new Product
{
    Name = productDto.Name,
    Price = productDto.Price,
    User = u
};
u.Products.Add(product);
n3h0vuf2

n3h0vuf22#

所以这里

var product = new ProductDto
           {
                Name = productDto.Name,
                Price = productDto.Price,
                Username = u.UserName
           };

您需要var product = new Product而不是new ProductDto

相关问题