为了账号安全,请及时绑定邮箱和手机立即绑定

在不删除数据的情况下在Entity Framework Core中重命名外键

在不删除数据的情况下在Entity Framework Core中重命名外键

C#
至尊宝的传说 2021-04-05 14:22:52
我有两个模型类: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脚本


查看完整回答
反对 回复 2021-04-17
  • 2 回答
  • 0 关注
  • 176 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信