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

时间:2018-11-13 11:58:20

标签: asp.net asp.net-mvc entity-framework

我创建了一个员工管理系统,其中有两种员工:

  1. 与员工签约
  2. 常驻员工

永久物具有合同用户拥有的所有属性,因此我确定了一对一或一比零,其中我将拥有2个模型contractUser和PermanentUser,并且contractUser可能会在永久用户表中有记录,也可能没有,我认为对于这些模型来说一切都很好,但是我如何才能将恒久用户记录添加到contractUser呢,这是两个模型:

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; }
}

1 个答案:

答案 0 :(得分:0)

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

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