如何将产品Dto添加到用户的产品阵列中?



所以基本上我的想法是,每个产品添加到数据库应该有它的名称,价格和谁创建它的用户的名字分配给它。我正在获取user并检查user是否存在于数据库中。如果他正在创建新产品,也就是productDto。最后,当我想将新产品添加到用户的实体产品列表时,我遇到了一个问题,即"您无法从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; }
}

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

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

这里

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

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

最新更新