EF中,关于外键引发循环报错的疑惑
public class User { [Key] [Display(Name = "工号")] [Required(ErrorMessage = "*")] [StringLength(15, ErrorMessage = "不能超过15个字符")] public string UserNo { get; set; } [Display(Name = "密码")] [Required(ErrorMessage = "*")] [StringLength(20, ErrorMessage = "不能超过20个字符")] [DataType(DataType.Password)] public string Password { get; set; } [Display(Name = "姓名")] [Required(ErrorMessage = "*")] [StringLength(10, ErrorMessage = "不能超过10个字符")] public string RealName { get; set; } [Display(Name = "性别")] [Required(ErrorMessage = "*")] public string Sex { get; set; } [Display(Name = "出生年月")] [Required(ErrorMessage = "*")] public DateTime? Birthday { get; set; } [Display(Name = "身份证号码")] public string IDCardNumber { get; set; } [Display(Name = "身高")] public int? Height { get; set; } [Display(Name = "照片")] public string PhotoUrl { get; set; } /// <summary> /// 是否残疾 /// </summary> [Display(Name = "残疾人")] public bool IsDisabled { get; set; } [Display(Name = "国家")] [Required(ErrorMessage = "*")] public int Country { get; set; } [Display(Name = "户口所在地")] public string DomicilePlace { get; set; } /// <summary> /// 婚姻状态 /// Y已婚 /// N未婚 /// </summary> [Display(Name = "婚姻状态")] public string IsMarried { get; set; } [Display(Name = "政治面貌")] [Required(ErrorMessage = "*")] public int PoliticsStatus { get; set; } [Display(Name = "学历")] public int? Education { get; set; } [Display(Name = "毕业学校")] public string GraduateSchool { get; set; } [Display(Name = "最高学位")] public string Degree { get; set; } [Display(Name = "获得学校")] public string DegreeBySchool { get; set; } [Display(Name = "居住地址")] public string ResidentialAddress { get; set; } [Display(Name = "邮编")] public string Post { get; set; } [Display(Name = "手机号码")] public string TelPhoneNumber { get; set; } [Display(Name = "电子邮箱")] public string Email { get; set; } [Display(Name = "QQ号码")] public string QQ { get; set; } [Display(Name = "MSN")] public string MSN { get; set; } [Display(Name = "入职日期")] [Required(ErrorMessage = "*")] public DateTime? JoinDate { get; set; } [Display(Name = "职位")] [Required(ErrorMessage = "*")] public int PositionID { get; set; } [ForeignKey("PositionID")] public virtual Position Position { get; set; } /// <summary> /// 在职/兼职/离退/实习 /// </summary> [Display(Name = "员工状态")] public string State { get; set; } [Display(Name = "工资类型")] [Required(ErrorMessage = "*")] public int PayType { get; set; } [Display(Name = "考核类型")] [Required(ErrorMessage = "*")] public int CheckType { get; set; } /// <summary> /// 是否 超级用户 /// 1是 /// 0否 /// </summary> [Display(Name = "用户类型")] public string IsSuper { get; set; } /// <summary> /// 是否启用 /// 0启用 /// 1禁用 /// </summary> [Display(Name = "状态")] public string IsEnable { get; set; } [Display(Name = "备注")] [StringLength(200, ErrorMessage = "不能超过200个字符")] public string Remark { get; set; } }
public class Interview { [Key] public int InterviewID { get; set; } [Display(Name = "员工")] [Required(ErrorMessage = "*")] public string UserNo { get; set; } [ForeignKey("UserNo")] public virtual User User { get; set; } [Display(Name = "访谈时间")] [Required(ErrorMessage = "*")] public DateTime InterviewDate { get; set; } [Display(Name = "访谈人")] [Required(ErrorMessage = "*")] public string InterviewUserNo { get; set; } /* [ForeignKey("InterviewUserNo")] public virtual User InterviewUser { get; set; } */ [Display(Name = "访谈事由")] public string Reason { get; set; } [Display(Name = "访谈内容")] public string Content { get; set; } [Display(Name = "访谈发现")] public string Result { get; set; } [Display(Name = "附件")] public string Attachment { get; set; } [Display(Name = "备注")] [StringLength(200, ErrorMessage = "不能超过200个字符")] public string Remark { get; set; } }