解决code first Migration 增加外键时出现错误的问题
Posted C_supreme
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决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 模式,在不熟悉注解的情况下,真的是每一步都是坑
填坑的过程很痛苦,但是填完之后就很舒服
以上是关于解决code first Migration 增加外键时出现错误的问题的主要内容,如果未能解决你的问题,请参考以下文章
解决Code First因_migrationHistory表与代码不一致的问题
Entity Framework Code-First(22):Code-based Migration
Entity Framework Code-First(20):Migration