首页 > 解决方案 > 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();

当我这样做时,数据库表没有更新,也没有任何新条目。

标签: entity-frameworkasp.net-core.net-coreasp.net-core-mvcentity-framework-core

解决方案


由于FashionNovaUserProduct是多对多关系,如果您想 FavoriteProduct在连接表中添加记录,只需使用

var favoriteProduct = new FavoriteProduct
        {
            ProductId = id,
            FashionNovaUserId = user.Id
        };

this.db.Add(favoriteProduct);//or this.db.FavoriteProduct.Add(favoriteProduct)
this.db.SaveChanges();

推荐阅读