Как сделать CRUD-операции с отношением один к одному или один к нулю? - PullRequest
0 голосов
/ 13 ноября 2018

Я создаю систему управления сотрудниками, в которой есть два вида сотрудников:

  1. работник по контракту
  2. постоянный сотрудник

постоянный имеет всесвойства, которые есть у пользователя по контракту, поэтому я вычислил один к одному или один к нулю, где у меня будет 2 модели contractUser и PermanentUser, а contractUser может иметь или не иметь запись в таблице constantUsers. Я думаю, что все в порядке для моделейно как я могу добавить запись постоянного пользователя в 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 голосов
/ 13 ноября 2018

Я думаю, что вы можете создать модель Employee со всеми общими свойствами, а затем позволить моделям ContractUser и PermanentUser наследоваться от модели Employee.

Структура Entity Framework Core создает одну таблицу в базе данных, эта таблица имеетвсе свойства, поэтому вам не нужно связывать две модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...