我有两个模型类:public class Survey{ public int SurveyId { get; set; } public string Name { get; set; }}public class User{ public int UserId { get; set; } public int SurveyId { get; set; } public Survey Survey { get; set; }}我想重命名Survey为StudentSurvey,这样就可以了StudentSurveyId。我相应地更新了模型中的类名和属性,并添加了迁移。但是,我得到:ALTER TABLE语句与FOREIGN KEY约束“ FK_User_Surveys_SurveyId”冲突。数据库“ AppName”的表“ dbo.Survey”的列“ SurveyId”中发生了冲突。我认为它正在尝试删除数据,因为它要求列中的数据(不能为null),所以我看到了该错误。但是我不想删除数据。我该如何重命名?
2 回答
慕妹3146593
TA贡献1820条经验 获得超9个赞
该文档建议使用MigrationBuilder.RenameColumn()
。还有RenameIndex()
,RenameTable()
和存储过程“ sp_rename ”(SQL Server中)重命名外键。例如:
migrationBuilder.Sql($"EXEC sp_rename 'dbo.{oldName}', '{newName}'");
使用SQL Server Management Studio中的数据库脚本工具(在rt上单击DB | Tasks | Generate Script ...)可以生成具有和不具有EF迁移自定义项的可比较的架构脚本。然后,您将知道EF命名已保留。
编辑:添加了'EXEC ...'以支持生成独立的T-SQL脚本
- 2 回答
- 0 关注
- 176 浏览
添加回答
举报
0/150
提交
取消