解决code first Migration 增加外键时出现错误的问题

 

先上模型

Comment

 

public class Comment
    {
        [Key]
        public int CommentId { get; set; }
        [Required]
        public int Star { get; set; }
        [Required]
        public string Content { get; set; }
        [Required]
        [MaxLength(30)]
        public string ProductName { get; set; }

        [Required]
        [ForeignKey("User")]
        public int UserId { get; set; }//需要增加的外键
        public virtual User User { get; set; }

    }

 

User

    public class User
    {
        [Key]
        public int UserId { get; set; }

        [Required(ErrorMessage = "该项为必填项")]
        [MaxLength(30, ErrorMessage = "请输入少于30个字符")]
        public string userName { get; set; }

        public virtual ICollection<Comment> Comment { get; set; }
    }

在程序包控制管理台执行

Add-Migration InitDB -Force
Update-Database -Verbose

出现错误 ALTER TABLE 语句与  FOREIGN KEY 约束"FK_dbo.Comments_dbo.Users_UserId"冲突。该冲突发生于数据库"ProComment",表"dbo.Users", column 'UserId'。

搜索之,未果。根据搜索的线索不断排查

终于,在将Users 和 Comments两个表的数据都删除之后,然后再执行,成功。

 

使用code first 模式,在不熟悉注解的情况下,真的是每一步都是坑

填坑的过程很痛苦,但是填完之后就很舒服

转载于:https://www.cnblogs.com/c-supreme/p/8684247.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值