entity-framework - EF Core - 无法使用复合键添加对象
问题描述
好的,我正在尝试创建一个包含用户最喜欢的项目的愿望清单,但是当我尝试将它们添加到用户时,EF 甚至没有尝试插入,没有任何操作。
这是我最喜欢的产品型号
public class FavoriteProduct : BaseDeletableModel<int>
{
public string FashionNovaUserId { get; set; }
public FashionNovaUser FashionNovaUser { get; set; }
public int ProductId { get; set; }
public Product Product { get; set; }
}
builder.Entity<FavoriteProduct>().HasKey(x => new { x.ProductId, x.FashionNovaUserId });
这是我的用户模型
public class FashionNovaUser : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual ICollection<FavoriteProduct> FavoriteProducts { get; set; }
然后通过我的服务层,我试图将 favoriteProduct 添加到用户列表中
var favoriteProduct = new FavoriteProduct
{
ProductId = id,
FashionNovaUserId = user.Id
};
user.FavoriteProducts.Add(favoriteProduct);
this.db.SaveChanges();
当我这样做时,数据库表没有更新,也没有任何新条目。
解决方案
由于FashionNovaUser
和Product
是多对多关系,如果您想 FavoriteProduct
在连接表中添加记录,只需使用
var favoriteProduct = new FavoriteProduct
{
ProductId = id,
FashionNovaUserId = user.Id
};
this.db.Add(favoriteProduct);//or this.db.FavoriteProduct.Add(favoriteProduct)
this.db.SaveChanges();
推荐阅读
- authentication - CouchDB Fauxton Web 界面:如何无需登录即可创建/编辑文档
- angular - 在 Angular 8 项目中加载 Firebase 远程配置
- angular - 复杂网络订购平台的 Angular 前端?
- javascript - Datatable 在本地工作正常,但在生产中我有错误?
- c++ - C++ 获取“控件可能会到达 Johnson-Trotter 代码上的非空函数的末尾
- php - 即使在发送正确的 Id_token 之后,也无法使用带有 futter android 应用程序的后端服务器对 google 登录进行身份验证
- node.js - 如何在 Electron 中为外部 URL 安装拼写检查器
- datatables - 来自 DataTalbes 的动态内容的 jquery featherlight
- javascript - 无法使用猫鼬和节点提供静态文件
- java - 无法将任何组件添加到 JFrame - IllegalArgumentException