簡體   English   中英

SQL Server在set子句中多次指定了列名。 實體框架問題

[英]SQL Server the column name is specified more than once in the set clause. Entity framework issue

當我使用EF6進行插入時,出現此錯誤

在SET子句中多次指定了列名“ employee_id”。 一列不能在同一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();

要解決此問題,請刪除近親模型上的關系,然后進行遷移。 要刪除,請刪除public virtual Employee Employee { get; set; } public virtual Employee Employee { get; set; } public virtual Employee Employee { get; set; }來自NextOfKin模型)。

此問題的原因如下:

  1. 只有正確命名引用屬性,才能正確創建關系。 在這種情況下,您應使用EmployeeID而不是employee_id來表示近親和雇員之間的關系。

  2. Employee模型沒有指向親戚模型的鏈接。 如果是一對多,則可以將以下屬性添加到Employee模型。

    公共虛擬列表NextOfKins {get; set;} //如果需要延遲加載

    要么

    公開列表NextOfKins {get; set;} //如果您不需要延遲加載

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM