解决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 -ForceUpdate-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

时间: 2024-10-08 00:55:02

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

mysql 创建外键时发生错误的原因和解决方法

可以去网上查看错误号,就能知道到底哪里出错了 https://zhidao.baidu.com/question/359868536.html 这里1452对应的错误是因为建立外键的表中还有数据,所以外键建立失败,删除数据后再添加即可成功建立外键 原文地址:https://www.cnblogs.com/kinome/p/9051584.html

MySQL里创建外键时错误的解决

--MySQL里创建外键时错误的解决--------------------------------2014/04/30在MySQL里创建外键时(Alter table xxx add constraint fk_xxx foreign key),提示错误,但只提示很简单的信息:ERROR 1005 (HY000): Can't create table '.\env_mon\#sql-698_6.frm' (errno: 150).根本起不到解决问题的作用.要看错误的详细提示,可以使用命令:(

Unity之一天一个技术点(五)---解决U3D程序“按下休眠键时退出程序”的问题

解决U3D程序"按下休眠键时退出程序"的问题(官方解决方案) 更改AndroidManifest.xml中的<activity>标签,来包含<android:configChanges>标记 活动标签示例如下所示:- <activity android:name=".AdMobTestActivity" android:label="@string/app_name" android:configChanges=&q

无法检索记录使用jpa库外键时为空

我面临一个问题,当我搜索一个实体及其与外键记录. 根据业务逻辑,我需要搜索实体--LookupRequest表帐户(与非空帐户id)和外键="回调"(null). 请注意账户id并不是唯一的(为简单起见我删除表中的其他参数,使其短). 一旦我筛选记录,我必须更新LookupRequest. 回调foreignkey条目. 我无法外键为空时检索记录. import javax.persistence.*; @Entitypublic class LookupRequest { @Id@G

sql server解决无法删除修改拥有外键约束的表或表的记录字段

sql server解决无法删除修改拥有外键约束的表或表的记录字段 问题如下: or 解决步骤: 1.找出该表的所有外键约束 select * from sys.foreign_keys where referenced_object_id=object_id('订单') order by 1 2.删除所有外键约束(注意外键的名字和表的名字分别是哪个!) alter table 订货项目 drop constraint FK__订货项目__订单编号__412EB0B6; 到这就可以把表删掉了~

EntityFramework Model有外键时,Json提示循环引用 解决方法

正文之前先说两句,距离上篇博客已将近两个月,这方面的学习和探索并没有停止,而是前进道路上遇上了各种各样的问题,需要不断的整理.反思和优化,这段时间的成果,将在最近陆续整理发出来. 个人感觉国内心态太浮躁了,很少有能深入研究下去并将自己经验分享的人,可能很忙,也可能嫌麻烦.特别是面向新技术,尤其是在学习资料有限的情况下,愿意花费时间摸索和分享的人实在太少太少,遇到问题,搜索结果一抓一大把,但是往往都是转载,连最起码的自己验证都没有,结果就是以讹传讹,不仅对解决问题无用,反而容易产生误导.最近这段时

新建表和增加外键

当我们创建好了一个数据库后,第一件事要做的就是给这个数据库增加表. Create Table tblPerson ( Id INT NOT NULL PRIMARY KEY, Name NVARCHAR(50) NOT NULL, Email NVARCHAR(50) NOT NULL, GenderId INT ) Create Table tblGender ( Id INT NOT NULL PRIMARY KEY, Gender NVARCHAR(20) ) 上面的代码创建了tblPer

在增加外键的时候碰到的问题

在mysql初学当中,碰到了这个问题. 现有两张表,student和class.student表中有id为主键,name和classid,class表中有id为主键,name,准备设置classid为外键约束.语句如下 alter table student add constraint fk_stu_classid foreign key(classid) references class(id); 经检查语句没有错误,但是报错信息如下: Can't create table 'db_19.#

Navicat设置外键时出现1452错误

admin表中有字段admin_name和admin_realname.notice表中有字段admin_name.之前,notice表中admin_name的外键是admin表的admin_name,现在想改成admin_realname,数据类型和字段长度都一样,但却提示1452错误,如下图所示. 然后百度了一下,得到了一个靠谱的答案: 这是因为表设置了外键约束,而你试图插入一条外键字段所在表纪录不存在的一个值,就会报1452错.比如a.b两表,a表外键id值来自b表的ID.当你在a表中插入