C# 迁移-外键约束
当我运行迁移时,我首先处理代码,我得到一个错误 在表“Users”上引入外键约束“FK_dbo.Users_dbo.Campaigns_CampaignID”可能会导致循环或多个级联路径。指定“在删除时不执行操作”或“在更新时不执行操作”,或修改其他外键约束。 无法创建约束。请参阅前面的错误 拜托,我需要帮助,我不明白为什么会发生这个错误 我看过其他类似的出版物,但我无法解决我的问题 谢谢C# 迁移-外键约束,c#,sql,asp.net,C#,Sql,Asp.net,当我运行迁移时,我首先处理代码,我得到一个错误 在表“Users”上引入外键约束“FK_dbo.Users_dbo.Campaigns_CampaignID”可能会导致循环或多个级联路径。指定“在删除时不执行操作”或“在更新时不执行操作”,或修改其他外键约束。 无法创建约束。请参阅前面的错误 拜托,我需要帮助,我不明白为什么会发生这个错误 我看过其他类似的出版物,但我无法解决我的问题 谢谢 public class User { public int ID { get; set;
public class User
{
public int ID { get; set; }
[StringLength(50, MinimumLength = 3)]
public string UserName { get; set; }
public string Password { get; set; }
[StringLength(50, MinimumLength = 3)]
public int CityID { get; set; }
public virtual City City { get; set; }
public int CampaignID { get; set; }
public virtual Campaign Campaign { get; set; }
public int RoomID { get; set; }
public virtual Room Room { get; set; }
public bool Status { get; set; }
public DateTime RegisterDate { get; set; }
public int UserCreator { get; set; }
}
public class City
{
public int ID { get; set; }
[StringLength(50, MinimumLength = 3)]
public string Name { get; set; }
public virtual ICollection Users { get; set; }
}
public class Campaign
{
public int ID { get; set; }
[StringLength(50, MinimumLength = 3)]
public string Name { get; set; }
public int CompanyID { get; set; }
public virtual Company Company { get; set; }
public virtual ICollection Users { get; set; }
public virtual ICollection Rooms { get; set; }
}
public class Company
{
public int ID { get; set; }
[StringLength(30, MinimumLength = 3)]
public string Name { get; set; }
public virtual ICollection Campaigns { get; set; }
}
public class Room
{
public int ID { get; set; }
[MaxLength(200)]
public string RoomKey { get; set; }
[StringLength(30, MinimumLength = 3)]
public string Name { get; set; }
public int UserCreator { get; set; }
public virtual User User { get; set; }
public int CampaignID { get; set; }
public virtual Campaign Campaign { get; set; }
public virtual ICollection Messages { get; set; }
}
public class Message
{
public int ID { get; set; }
public string Content { get; set; }
public string Timestamp { get; set; }
public int UserID { get; set; }
public virtual User User { get; set; }
public int RoomID { get; set; }
public virtual Room Room { get; set; }
}
那是因为你把关系搞砸了 用户->城市、活动、房间 活动->公司 文件室->活动,用户(创建者) 信息->用户,房间 我猜您之所以将“活动ID”和“房间ID”提交给用户,是因为您想知道谁将加入什么活动以及什么房间。但这是错误的 您需要的是用户的主数据,您只需要用户信息,与活动或会议室无关。这些关系被视为事务数据,这意味着今天userA可以加入这个房间,但明天userA可以加入另一个房间。在这一年中,一个用户可以加入许多房间,许多活动。我建议的解决办法是 用户->城市 RoomAttendes->UserID,RoomID(此处不需要活动ID,因为会议室已获得对活动的引用) 活动->公司 文件室->活动,用户(创建者)
信息->用户,房间那是因为你把关系搞砸了 用户->城市、活动、房间 活动->公司 文件室->活动,用户(创建者) 信息->用户,房间 我猜您之所以将“活动ID”和“房间ID”提交给用户,是因为您想知道谁将加入什么活动以及什么房间。但这是错误的 您需要的是用户的主数据,您只需要用户信息,与活动或会议室无关。这些关系被视为事务数据,这意味着今天userA可以加入这个房间,但明天userA可以加入另一个房间。在这一年中,一个用户可以加入许多房间,许多活动。我建议的解决办法是 用户->城市 RoomAttendes->UserID,RoomID(此处不需要活动ID,因为会议室已获得对活动的引用) 活动->公司 文件室->活动,用户(创建者)
留言->用户,房间谢谢回复,帮了我很大的忙。我做了一些改变,它起了作用。很高兴它有帮助。如果你不介意的话,请接受这个答案。谢谢你的回复,它帮了我很多。我做了一些改变,它起了作用。很高兴它有帮助。如果你不介意,请接受答案。