Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 迁移-外键约束_C#_Sql_Asp.net - Fatal编程技术网

C# 迁移-外键约束

C# 迁移-外键约束,c#,sql,asp.net,C#,Sql,Asp.net,当我运行迁移时,我首先处理代码,我得到一个错误 在表“Users”上引入外键约束“FK_dbo.Users_dbo.Campaigns_CampaignID”可能会导致循环或多个级联路径。指定“在删除时不执行操作”或“在更新时不执行操作”,或修改其他外键约束。 无法创建约束。请参阅前面的错误 拜托,我需要帮助,我不明白为什么会发生这个错误 我看过其他类似的出版物,但我无法解决我的问题 谢谢 public class User { public int ID { get; set;

当我运行迁移时,我首先处理代码,我得到一个错误

在表“Users”上引入外键约束“FK_dbo.Users_dbo.Campaigns_CampaignID”可能会导致循环或多个级联路径。指定“在删除时不执行操作”或“在更新时不执行操作”,或修改其他外键约束。 无法创建约束。请参阅前面的错误

拜托,我需要帮助,我不明白为什么会发生这个错误

我看过其他类似的出版物,但我无法解决我的问题

谢谢

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,因为会议室已获得对活动的引用)

活动->公司

文件室->活动,用户(创建者)


留言->用户,房间

谢谢回复,帮了我很大的忙。我做了一些改变,它起了作用。很高兴它有帮助。如果你不介意的话,请接受这个答案。谢谢你的回复,它帮了我很多。我做了一些改变,它起了作用。很高兴它有帮助。如果你不介意,请接受答案。