c# - 实体框架代码优先:如何添加与现有实体相关的实体?
问题描述
有一张Products
桌子。每个产品都有一个评论列表。添加产品时,最初它们没有评论。我正在尝试通过添加到产品List<Review>
内部来向现有产品添加评论,但它会引发错误
违反多重性约束
产品.cs
namespace DatabaseProject.Models
{
public class Product
{
public Product()
{
Reviews = new List < Review >();
}
public int Id { get; set; }
public Catagory Catagory { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string Specification { get; set; }
public List<Review> Reviews { get; set; }
}
}
评论.cs
namespace DatabaseProject.Models
{
public class Review
{
public int Id { get; set; }
public string Text { get; set; }
public int Stars { get; set; }
[Required]
public Product Product { get; set; }
[Required]
public Customer Customer { get; set; }
}
}
添加新产品的方法
public Product Add(Product product)
{
using (var context = new ShopDbContext())
{
context.Database.Log = Console.WriteLine;
var response = context.Products.Add(product);
context.SaveChanges();
return response;
}
}
添加新评论的方法
public bool AddReview(int id, Review review)
{
using (var context = new ShopDbContext())
{
Product oldProduct = context.Products.Find(id);
if (oldProduct == null)
{
return false;
}
oldProduct.Reviews.Add(review);
context.SaveChanges();
return true;
}
}
添加新产品。这工作正常。
Product p = new Product
{
Catagory = Catagory.COMPUTER,
Name = "Surface Pro 3",
Description = "Tablet / Laptop",
Specification = "i5 16 GB ram",
};
productService.Add(p);
添加新评论:
Review review = new Review
{
Customer = customerService.Get(1),
Product = productService.Get(1),
Stars = 2,
Text = "It's a good camera",
};
productService.AddReview(1, review);
抛出此错误
System.InvalidOperationException: '违反多重性约束。关系“DatabaseProject.Review_Product”的角色“Review_Product_Target”具有多重性 1 或 0..1。
编辑
对不起,我忘了提这个。
我还有一张Customer
表,其中存储了该客户所做的一组评论。这是以某种方式导致错误吗?
namespace DatabaseProject.Models
{
public class Customer
{
public Customer()
{
Addresses = new List<Address>();
Reviews = new List<Review>();
}
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 List<Address> Addresses { get; set; }
public List<Review> Reviews { get; set; }
}
}
解决方案
推荐阅读
- python - 为什么 while 循环不会在用户提问后继续并停止?
- c# - EPPlus,删除该行中的行和图像
- javascript - 如何克服开玩笑“初始化前无法访问”的问题?
- lua - 音频不会停止?爱情2d
- typescript - Typescript 从函数输入参数推断返回对象的键名
- python - 如何在 Pandas 中读取具有唯一值的嵌套 Json
- php - 视觉作曲家后端编辑器不适用于 U-design 主题旧版本
- spring - 为什么我的集成测试抱怨 Spring Boot 中缺少 RestTemplate 接线?
- javascript - JavaScript 类,如何在实践中应用“关注点分离”和“不要重复自己”(DRY)
- c# - HttpClient POST Protobuf ByteArray 到 ASP.NET Core Web API