C# 首先使用EF代码的循环和多个级联路径

C# 首先使用EF代码的循环和多个级联路径,c#,asp.net-mvc-3,ef-code-first,C#,Asp.net Mvc 3,Ef Code First,我太糊涂了!!! 这是我第一次使用MVC3和EF代码。我得到以下错误: 在表“CityUsers”上引入外键约束“FK_dbo.CityUsers_dbo.Cities_CityID”可能会导致循环或多个级联路径。指定“在删除时不执行操作”或“在更新时不执行操作”,或修改其他外键约束。 无法创建约束 我已经为此工作了几个小时,做了我能做的一切,但就是无法处理 场景是,有一个Man类,从该类派生用户。每个用户只属于一个城市。我所说的用户是指管理员用户。每个城市都可以插入/更新多个城市,每个城市一次

我太糊涂了!!! 这是我第一次使用MVC3和EF代码。我得到以下错误:

在表“CityUsers”上引入外键约束“FK_dbo.CityUsers_dbo.Cities_CityID”可能会导致循环或多个级联路径。指定“在删除时不执行操作”或“在更新时不执行操作”,或修改其他外键约束。 无法创建约束

我已经为此工作了几个小时,做了我能做的一切,但就是无法处理

场景是,有一个Man类,从该类派生用户。每个用户只属于一个城市。我所说的用户是指管理员用户。每个城市都可以插入/更新多个城市,每个城市一次只能由一个用户修改。 我创建了第三个名为'CityUser'的表来跟踪修改城市记录的用户

以下是我的模型课程:

public class Man
{
    [Key]
    [DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)]
    public long ID { get; set; }
    //------------------------------------------------------------//
    [Required, MaxLength(20)]
    [LocalizedAttribute("FName")]
    public string FName { get; set; }
    //------------------------------------------------------------//
    [Required, MaxLength(20)]
    [LocalizedAttribute("LastName")]
    public string LastName { get; set; }
    //------------------------------------------------------------//
    [Required]
    [RegularExpression("^[0-9]+$", ErrorMessageResourceName = "ErrorOnlyNumbers", ErrorMessageResourceType = typeof(MAHAL_E_MA_Model.Properties.Resources))]
    [LocalizedAttribute("Mobile")]
    public string Mobile { get; set; }
    //------------------------------------------------------------//
    [LocalizedAttribute("Phone")]
    [RegularExpression("^[0-9]+$", ErrorMessageResourceName = "ErrorOnlyNumbers", ErrorMessageResourceType = typeof(MAHAL_E_MA_Model.Properties.Resources))]
    public string HomePhone { get; set; }
    //------------------------------------------------------------//
    [RegularExpression("^[0-9]+$")]
    [LocalizedAttribute("IDCardNumber")]
    public string IDCardNumber { get; set; }
    //------------------------------------------------------------//
    [RegularExpression("^[0-9]+$")]
    [LocalizedAttribute("NationalCode")]
    public string NationalCode { get; set; }
    //------------------------------------------------------------//
    [MaxLength(10)]
    [LocalizedAttribute("DOB")]
    public int DOB { get; set; }
    //------------------------------------------------------------//
    [Required]
    public int CityID { get; set; }
    [ForeignKey("CityID")]
    public virtual City CityParent { get; set; }
    //------------------------------------------------------------//
    [MaxLength(100)]
    [LocalizedAttribute("Address")]
    public string Address { get; set; }
    //------------------------------------------------------------//
    [LocalizedAttribute("PostalCode")]
    public string PostalCode { get; set; }
    //------------------------------------------------------------//
    [MaxLength(255)]
    [LocalizedAttribute("PhotoPath")]
    public string PhotoPath { get; set; }
}

 public class User : Man
{
    [MaxLength(20)]
    [LocalizedAttribute("Username")]
    public string UserName { get; set; }
    //------------------------------------------------------------//
    [DataType(DataType.Password)]
    [MaxLength(100), MinLength(6, ErrorMessageResourceType = typeof(MAHAL_E_MA_Model.Properties.Resources), ErrorMessageResourceName = "ErrorPasswordLength")]
    [LocalizedAttribute("Password")]
    public string Password { get; set; }
    //------------------------------------------------------------//
    [DataType(DataType.Password)]
    [Compare("Password", ErrorMessageResourceType = typeof(MAHAL_E_MA_Model.Properties.Resources), ErrorMessageResourceName = "ErrorConfirmPassword")]
    [LocalizedAttribute("ConfirmPassword")]
    public string ConfirmPassword { get; set; }
    //------------------------------------------------------------//
    [DataType(DataType.EmailAddress, ErrorMessageResourceType = typeof(MAHAL_E_MA_Model.Properties.Resources), ErrorMessageResourceName = "ErrorEmailInvalid")]
    [MaxLength(20)]
    [RegularExpression(@"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}")]
    [LocalizedAttribute("Email")]
    public string Email { get; set; }
    //------------------------------------------------------------//
    [MaxLength(30)]
    [LocalizedAttribute("Title")]
    public string Title { get; set; }
    //------------------------------------------------------------//
    [MaxLength(10)]
    [LocalizedAttribute("HireDate")]
    public int HireDate { get; set; }
    //------------------------------------------------------------//
    [LocalizedAttribute("ReportsTo")]
    public long ReportsTo { get; set; }
    [ForeignKey("ReportsTo")]
    public virtual IList<User> ReportsChild { get; set; }
}

public class City
{
    [Key]
    [DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)]
    public int CityID { get; set; }
    //------------------------------------------------------------//
    [Required, MaxLength(20)]
    [LocalizedAttribute("Name")]
    public string Name { get; set; }
    //------------------------------------------------------------//
    [LocalizedAttribute("PhoneCode")]
    public int PhoneCode { get; set; }
    //------------------------------------------------------------//
    [Required, MaxLength(10)]
    public int ModifiedDate { get; set; }
}

public class CityUser
{
    [Key]
    [DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)]
    public int CityUserID { get; set; }
    //------------------------------------------------------------//
    [Required]
    public long ModifiedByUserID { get; set; }
    [ForeignKey("ModifiedByUserID")]
    public virtual User OperatorUser { get; set; }
    //------------------------------------------------------------//
    [Required]
    public int CityID { get; set; }
    [ForeignKey("CityID")]
    public virtual City City { get; set; }
}
public-class-Man
{
[关键]
[DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGenerateOptions.Identity)]
公共长ID{get;set;}
//------------------------------------------------------------//
[必需,最大长度(20)]
[本地化属性(“FName”)]
公共字符串FName{get;set;}
//------------------------------------------------------------//
[必需,最大长度(20)]
[本地化属性(“姓氏”)]
公共字符串LastName{get;set;}
//------------------------------------------------------------//
[必需]
[RegularExpression(“^[0-9]+$”,ErrorMessageResourceName=“ErrorOnlyNumbers”,ErrorMessageResourceType=typeof(MAHAL_E_MA_Model.Properties.Resources))]
[本地化属性(“移动”)]
公共字符串Mobile{get;set;}
//------------------------------------------------------------//
[本地化属性(“电话”)]
[RegularExpression(“^[0-9]+$”,ErrorMessageResourceName=“ErrorOnlyNumbers”,ErrorMessageResourceType=typeof(MAHAL_E_MA_Model.Properties.Resources))]
公共字符串家庭电话{get;set;}
//------------------------------------------------------------//
[正则表达式(“^[0-9]+$”)
[本地化数据属性(“IDCardNumber”)]
公共字符串IDCardNumber{get;set;}
//------------------------------------------------------------//
[正则表达式(“^[0-9]+$”)
[本地化属性(“国家代码”)]
公共字符串国家代码{get;set;}
//------------------------------------------------------------//
[MaxLength(10)]
[本地化属性(“DOB”)]
公共int-DOB{get;set;}
//------------------------------------------------------------//
[必需]
public int CityID{get;set;}
[外键(“CityID”)]
公共虚拟城市公园{get;set;}
//------------------------------------------------------------//
[MaxLength(100)]
[本地化属性(“地址”)]
公共字符串地址{get;set;}
//------------------------------------------------------------//
[本地化属性(“PostalCode”)]
公共字符串PostalCode{get;set;}
//------------------------------------------------------------//
[最大长度(255)]
[本地化属性(“光路”)]
公共字符串光路{get;set;}
}
公共类用户:Man
{
[MaxLength(20)]
[本地化属性(“用户名”)]
公共字符串用户名{get;set;}
//------------------------------------------------------------//
[数据类型(数据类型.密码)]
[MaxLength(100),MinLength(6,ErrorMessageResourceType=typeof(MAHAL_E_MA_Model.Properties.Resources),ErrorMessageResourceName=“ErrorPasswordLength”)]
[本地化属性(“密码”)]
公共字符串密码{get;set;}
//------------------------------------------------------------//
[数据类型(数据类型.密码)]
[比较(“密码”,ErrorMessageResourceType=typeof(MAHAL_E_MA_Model.Properties.Resources),ErrorMessageResourceName=“ErrorConfirmPassword”)]
[本地化属性(“确认密码”)]
公共字符串ConfirmPassword{get;set;}
//------------------------------------------------------------//
[数据类型(DataType.EmailAddress,ErrorMessageResourceType=typeof(MAHAL_E_MA_Model.Properties.Resources),ErrorMessageResourceName=“ErrorEmailInvalid”)]
[MaxLength(20)]
[正则表达式(@“[a-zA-Z0-9.\%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}”)]
[本地化属性(“电子邮件”)]
公共字符串电子邮件{get;set;}
//------------------------------------------------------------//
[MaxLength(30)]
[本地化属性(“标题”)]
公共字符串标题{get;set;}
//------------------------------------------------------------//
[MaxLength(10)]
[本地化属性(“HireDate”)]
public int HireDate{get;set;}
//------------------------------------------------------------//
[本地化属性(“ReportsTo”)]
公共长报告{get;set;}
[外键(“报告”)]
公共虚拟IList ReportsChild{get;set;}
}
公营城市
{
[关键]
[DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGenerateOptions.Identity)]
public int CityID{get;set;}
//------------------------------------------------------------//
[必需,最大长度(20)]
[本地化属性(“名称”)]
公共字符串名称{get;set;}
//------------------------------------------------------------//
[本地化属性(“电话代码”)]
公共int电话码{get;set;}
//------------------------------------------------------------//
[必需,最大长度(10)]
public int ModifiedDate{get;set;}
}
公营城市巴士
{
[关键]
[DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGenerateOptions.Identity)]
公共int CityUserID{get;set;}
//------------------------------------------------------------//
[必需]
公共长廊
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();