所以基本上我的想法是每个添加到数据库的产品都应该有它的名称,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; }
}
2条答案
按热度按时间bnlyeluc1#
问题是
u.Products
是Product
实体的列表。因此,您无法向其中添加ProductDto
。因此,您需要像这样更改代码。创建一个新的Product
实体,并根据ProductDto
中的值设置值。n3h0vuf22#
所以这里
您需要
var product = new Product
而不是new ProductDto