如何对一对一或一对零关系进行CRUD操作



Am创建了一个有两种员工的员工管理系统:

  1. 合同雇员
  2. 长期雇员

永久用户拥有合同用户拥有的所有属性,所以我计算出了一对一或一对零,其中我将有两个模型contractUser和PermanentUser,而contractUser可能在permanentUsers表中有记录,也可能没有记录,我认为模型一切都很好,但我如何向contractUser添加一个PermanentUser记录呢?以下是两个模型:

public class ContractUser
{
public int Id { get; set; }
[Display(Name = "الاسم")]
[Required(ErrorMessage ="من فضلك ادخل اسم الموظف")]
public string name { get; set; }
[Display(Name = "الرقم القومي")]
[Required(ErrorMessage = "برجاء ادخال الرقم القومي")]
[MaxLength(14,ErrorMessage ="الرقم القومي بجب ان يتكون من 14 رقم فقظ")]
[MinLength(14, ErrorMessage = "الرقم القومي بجب ان يتكون من 14 رقم ")]
public string nationalId { get; set; }
[Display(Name = "رقم الموبيل")]
[Required (ErrorMessage = "برجاء ادخال رقم الموبيل")]
[MaxLength(11, ErrorMessage = "رقم الموبيل بجب ان يتكون من 11 رقم فقظ")]
[MinLength(11, ErrorMessage = "رقم الموبيل بجب ان يتكون من 11 رقم ")]
public string mobileNumber { get; set; }
[Display(Name = "العنوان")]
[Required(ErrorMessage ="برجاء ادخال العنوان")]
public string address { get; set; }
[Display(Name = "نسبة العجز")]
[Required(ErrorMessage = "برجاء ادخال نسبة العجز و ان كانت 0")]
[Range(0,100,ErrorMessage ="بحب النسبة ان تكون بين 0-100")]
public int disablityPrecentage { get; set; }
[Display(Name = "تاريخ الميلاد")]
[Required(ErrorMessage = "برجاء ادخال تاريخ الميلاد")]
public DateTime birthDate { get; set; }
[Display(Name = "تاريخ التعاقد")]
[Required(ErrorMessage = "برجاء ادخال تاريخ التعاقد")]
public DateTime contractionDate { get; set; }
[Display(Name = "الحالة الاجتماعية")]
[Required(ErrorMessage = "  برجاءاختيار الحالة الاجتماعية ")]
public int maritalStateId { get; set; }

//navigation properties
public MaritalState maritalState { get; set; }
public PermanentUser permanentUserDetails { get; set; }

永久用户类别

public class PermanentUser
{
[Key]
[ForeignKey("ContractUser")]
public int EmpolyeeId { get; set; }
[Required(ErrorMessage = "براجاء ادخال المؤهل")]
[Display(Name = "المؤهل")]
public string Qualification { get; set; }

[Required(ErrorMessage = "براجاء ادخال المسمي الوظيفي")]
[Display(Name = "المسمي الوظيفي")]
public string jobName { get; set; }
[Required(ErrorMessage = "براجاء ادخال رقم الملف ")]
[Display(Name = "رقم ملف الخدمة")]
public int fileNumber { get; set; }
[Required(ErrorMessage = "براجاء ادخال تاريخ التثبيت  ")]
[Display(Name = "تاريخ التثبيت ")]
public DateTime tasbetDate { get; set; }
[Required(ErrorMessage = "براجاء ادخال قرار التثبيت  ")]
[Display(Name = "قرار التثبيت ")]
public int tasbetOrderNumber { get; set; }

[Required(ErrorMessage = "براجاء اختيار المجموعة الوظيفية  ")]
[Display(Name = "المجموعة الوظيفية  ")]
public int jobGroupId { get; set; }

//navigation properties
public ContractUser ContractUser { get; set; }
public JobGroup jobGroup { get; set; }
}

我认为您可以创建一个具有所有共享属性的Employee模型,然后让ContractUser和PermanentUser模型继承Employees模型。

实体框架Core在数据库中创建一个表,该表具有所有属性,因此不必链接这两个模型。

最新更新