首页 > 解决方案 > 实体框架无法在模型上添加新数据

问题描述

我有一个与书店合作的项目。当用户购买书籍时,我想在 SoldBooks 表中添加一条记录,其中包含有关书籍和用户的信息。但是除了我想添加用户 ID 之外,添加一切都很好。Visual Studio 不允许我添加一个 int “无法将类型 INT 隐式转换为 models.User”

db.SoldBooks.Add(new SoldBook
{
 Title = book.Title,
 Author = book.Author,
 Price = book.Price,
 PurchaseDate = DateTime.Now,
 CategoryId = catid,
 User = 1                           
});
db.SaveChanges();

但是当我检查我的数据库时,字段 UserId 说它是一个 INT 在此处输入图像描述

我应该怎么做才能将用户 ID 添加到新记录?谢谢

模型/用户.cs

class User
    {
        public int Id { get; set; }
        [Required]
        public string Name { get; set; }
        [Required]
        public string Password { get; set; }
        public DateTime LastLogin { get; set; }
        public DateTime SessionTimer { get; set; }
        public bool IsActive { get; set; }
        public bool IsAdmin { get; set; }
    }

模型/SoldBook.cs

class SoldBook
    {
        [Key]
        public int Id { get; set; }
        public string Title { get; set; }
        public string Author { get; set; }
        public int CategoryId { get; set; }
        public int Price { get; set; }
        public DateTime PurchaseDate { get; set; }
        public User User { get; set; }
    }

标签: c#entity-framework-6entity

解决方案


进行此更改(您必须添加有关 ForeignKey 的信息,以便 EF 知道这两个表是如何相关的):

class SoldBook
{
    [Key]
    public int Id { get; set; }
    public string Title { get; set; }
    public string Author { get; set; }
    public int CategoryId { get; set; }
    public int Price { get; set; }
    public DateTime PurchaseDate { get; set; }
        
    public int IdUser { get; set; }
    [ForeignKey("IdUser")]
    public User User { get; set; }
}

然后添加记录:

db.SoldBooks.Add(new SoldBook
{
 Title = book.Title,
 Author = book.Author,
 Price = book.Price,
 PurchaseDate = DateTime.Now,
 CategoryId = catid,
 IdUser = 1                           
});
db.SaveChanges();

推荐阅读