微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

实体框架无法在模型上添加新数据

如何解决实体框架无法在模型上添加新数据

我有一个与书店合作的项目。当用户购买一本书时,我想在 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

enter image description here

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

模型/User.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; }
    }

解决方法

进行此更改(您必须添加有关 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();
,

您应该向您的 SoldBook 对象添加额外的 UserId 字段并使用它代替 User

public int UserId { get; set; }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。