gpt4 book ai didi

c# - Entity Framework 代码首先两个表之间的关系

转载 作者:太空宇宙 更新时间:2023-11-03 16:05:29 25 4
gpt4 key购买 nike

我有两个有点问题的表。

  • 第一个表是关于用户的,有 - userId、username、password 等

  • 第二个是处理消息,所以它有 - messageId、senderId、receiverId、 messageContent。

如您所见,senderIdreceiverId 都需要与 users 表中的 userId 相关。

但是当我尝试使用 Code First 时,它崩溃了。我得到一个异常:

"Introducing FOREIGN KEY constraint 'FK_dbo.Messages_dbo.Users_ReceiverId' on table 'Messages' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints."

这就是我在 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);

关于c# - Entity Framework 代码首先两个表之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19687164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com