SQL Server имя столбца указывается более одного раза в предложении set.Проблема сущности - PullRequest
0 голосов
/ 19 октября 2018

Когда я делаю вставку с использованием 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 = "xa@xo.com";
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();

1 Ответ

0 голосов
/ 19 октября 2018

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

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

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

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

    public virtual List NextOfKins {get;set;} // если вам нужна ленивая загрузка

    или

    public List NextOfKins {get;set;} // если вам не нужна ленивая загрузка

...