我有两张桌子有问题。
第一个表与用户有关,并具有-userId, username, password, etc
。
第二个是处理消息,因此它具有-messageId, senderId, receiverId,
messageContent。
如您所见,senderId
和receiverId
都需要与users表中的userId相关联。
但是,当我尝试使用Code First时,它崩溃了。
我有一个例外:
“在表'Messages'上引入FOREIGN KEY约束'FK_dbo.Messages_dbo.Users_ReceiverId'可能会导致循环或多个级联路径。请指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。”
这就是我在Message类中建立关系的方式:
[ForeignKey("Sender")]
public int SenderId { get; set; }
public virtual User Sender { get; set; }
[ForeignKey("Receiver")]
public int ReceiverId { get; set; }
public virtual User Receiver { get; set; }
有任何想法吗?我现在被困住了。如果我先进行数据库操作,则效果很好,但如果我先尝试代码,则效果不佳。
最佳答案
在Migrations文件夹中生成的.cs文件中,将cascadeDelete: true
替换为cascadeDelete: false
,例如:
AddForeignKey("dbo.Messages", "ReceiverId", "dbo.Users", "Id",
cascadeDelete: true);
AddForeignKey("dbo.Messages", "SenderId", "dbo.Users", "Id",
cascadeDelete: true);
成为:
AddForeignKey("dbo.Messages", "ReceiverId", "dbo.Users", "Id",
cascadeDelete: false);
AddForeignKey("dbo.Messages", "SenderId", "dbo.Users", "Id",
cascadeDelete: false);