مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

mohamad200

عضویت از 1396/10/29

مشکل در تعریف کلید اصلی و خارجی در EF

  • دوشنبه 28 اسفند 1396
  • 11:56
تشکر میکنم

سلام دوستان...
من دو  تا موجودیت دارم که ما خوام برای اینا کلید اصلی و خارجی تعریف کنم .. اما نمی تونم و خطا می ده لطفا راهنمایی کننید(برنامه تو محیط کنسول هست)







 class Employee
    {
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        [Key]
        public int EmployeeID { get; set; }
        [Required]
        [StringLength(50)]
        public string  FirstName { get; set; }
        [Required]
        [StringLength(50)]
        public string  LastName { get; set; }
        [StringLength(50)]
        public string  MiddleName { get; set; }
        public virtual EmployeeDetail EmployeeDetail { get; set; }
    }




  class EmployeeDetail
    {
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        [Key, ForeignKey("Employee")]
        public int EmployeeID { get; set; }
        [StringLength(10)]
        public string  Gender { get; set; }
        [StringLength(255)]
        public string EmailAddress { get; set; }
        [StringLength(50)]
        public string  phoneNumber { get; set; }
        public virtual Employee Employee { get; set; }
    }


 class dbContext:DbContext

    {
        public dbContext() : base("defaultConnectionString")
        {

        }
        public DbSet<Employee> Employees { get; set; }
        public DbSet<EmployeeDetail> EmployeeDetails { get; set; }
    }

متن خطا:

Unable to determine the principal end of the 'efTest.EmployeeDetail_Employee' relationship. Multiple added entities may have the same primary key.

پاسخ های این پرسش

تعداد پاسخ ها : 1 پاسخ
کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • دوشنبه 28 اسفند 1396
  • 12:07

به شکل زیر عمل کنید:

     class dbContext : DbContext

        {
            public dbContext() : base("defaultConnectionString")
            {

            }
            public DbSet<Employee> Employees { get; set; }
            public DbSet<EmployeeDetail> EmployeeDetails { get; set; }


            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                base.OnModelCreating(modelBuilder);

                modelBuilder.Entity<Employee>().HasOptional(x => x.EmployeeDetail).HasRequired(x => x.Employee);

            }
        }
        class EmployeeDetail
        {
            [DatabaseGenerated(DatabaseGeneratedOption.None)]
            public int Id { get; set; }
            [StringLength(10)]
            public string Gender { get; set; }
            [StringLength(255)]
            public string EmailAddress { get; set; }
            [StringLength(50)]
            public string phoneNumber { get; set; }
            public virtual Employee Employee { get; set; }
        }

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)