SQL Server имя столбца указано более одного раза в предложении set. Проблема с сущностью

Когда я делаю вставку с использованием EF6, я получаю эту ошибку

Имя столбца «employee_id» указано более одного раза в предложении SET. Столбцу не может быть присвоено более одного значения в одном предложении SET. Измените предложение SET, чтобы столбец обновлялся только один раз. Если предложение SET обновляет столбцы представления, то имя столбца «employee_id» может дважды появляться в определении представления.

Мои модели выглядели так:

public class Entity
{
        public Entity()
        {
            IsActive = true;
            IsDeleted = false;
            DateCreated = DateTime.Now;
        }

        [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public long ID { get; set; }
        public int CompanyID { get; set; }
        public int SubID { get; set; }
        public DateTime DateCreated { get; set; }

        public bool IsTransient()
        {
            return EqualityComparer<long>.Default.Equals(ID, default(long));
        }

        public bool IsDeleted { get; set; }
        public bool IsActive { get; set; }
}

public partial class NextOfKin : Entity
{
        [Required]
        public long employee_id { get; set; }

        [StringLength(100)]
        [Required]
        public string nok_first_name { get; set; }

        [StringLength(100)]
        [Required]
        public string nok_last_name { get; set; }

        [StringLength(300)]
        [Required]
        public string nok_address { get; set; }

        [StringLength(100)]
        public string nok_email { get; set; }

        [StringLength(100)]
        public string nok_phone { get; set; }

        [StringLength(100)]
        public string nok_employer { get; set; }

        [StringLength(300)]
        public string nok_work_address { get; set; }

        [StringLength(100)]
        [Required]
        public string nok_relationship { get; set; }

        public virtual Employee Employee { get; set; }
}

public class Employee : Entity
{
        //Person Records
        public long UserId { get; set; }
        public int TitleId { get; set; }
        public int? ReligionId { get; set; }
        public string SerialNo { get; set; }
        [StringLength(100)]
        [Required]
        public string FirstName { get; set; }
        [StringLength(100)]
        [Required]
        public string LastName { get; set; }
}

Мой код вставки в ближайших родственников был таким.

NextOfKin nextOfKin = new NextOfKin();

nextOfKin.employee_id = newEmployee.ID;
nextOfKin.nok_first_name = "Friday";
nextOfKin.nok_last_name = "Ben";
nextOfKin.nok_address = "XXX";
nextOfKin.nok_email = "[email protected]";
nextOfKin.nok_phone = "023938494";
nextOfKin.nok_employer = "50 Queens Street";
nextOfKin.nok_work_address = "51 Queens Street";
nextOfKin.nok_relationship = "Neighbour";

db.NextOfKins.Add(nextOfKin);
db.SaveChanges();

person Ziregbe Otee    schedule 19.10.2018    source источник


Ответы (1)


Чтобы исправить это, удалите отношения в модели ближайших родственников, а затем выполните миграцию. Чтобы удалить, удалите public virtual Employee Employee { get; set; } из модели NextOfKin.

Причина этой проблемы заключается в следующем:

  1. Отношения создаются правильно только в том случае, если вы правильно называете ссылочное свойство. В этом случае вы должны использовать EmployeeID вместо employee_id для отношений между ближайшими родственниками и сотрудником.

  2. Модель Employee не имеет обратной связи с моделью ближайших родственников. Если это один ко многим, вы можете добавить свойство ниже к модели Employee.

    публичный виртуальный список NextOfKins{get; set;} //если вам нужна ленивая загрузка

    or

    общедоступный список NextOfKins{get; set;} //если вам не нужна ленивая загрузка

person Ziregbe Otee    schedule 19.10.2018