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

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

کاربر سایت

amir97

عضویت از 1395/03/08

لینک دادن 2 فیلد به یک فیلد جدول دیگر

  • دوشنبه 16 مهر 1397
  • 17:38
تشکر میکنم
سلام داخل ef core چطور میشه 2تا فیلد یک جدول رو به یک فیلد از جدولی دیگه کلید خارجی زد؟

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

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

سهیل علیزاده

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

  • دوشنبه 16 مهر 1397
  • 18:19

شما به دو طریق میتوان این کار را انجام دهید یکی از آنها از طریق Data Annotation و دیگری Fluent Api می باشد. فرض کنید یک کلاس Student داریم که دارای محل تولد و محل زندگی می باشد و محل زندگی آن توسط کلاسی به نام City مشخص می شود. به شکل زیر:

    public class Student
    {
        public int BirthCityId { get; set; }

        public int LivingCityId { get; set; }


        public virtual City BirthCity { get; set; }


        public virtual City LivingCity { get; set; }
    }

    public class City
    {
        public virtual ICollection<Student> BirthCityStudents { get; set; }

        public virtual ICollection<Student> LivingCityStudents { get; set; }
    }

اگر میخواهید از Data Annotation استفاده کنید به شکل زیر عمل کنید:

    public class Student
    {
        public int BirthCityId { get; set; }

        public int LivingCityId { get; set; }

        [ForeignKey("BirthCityId")]
        [InverseProperty("BirthCityStudents")]
        public virtual City BirthCity { get; set; }

        [ForeignKey("LivingCityId")]
        [InverseProperty("LivingCityStudents")]
        public virtual City LivingCity { get; set; }
    }

اگر میخواهید از Fluent API استفاده کنید به سراغ Context خود بروید و سپس متد OnModelCreating را override کنید و رابطه های مورد نظر رو اعمال کنید:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
     modelBuilder.Entity<Student>().HasRequired(m => m.BirthCity)
               .WithMany(m => m.BirthCityStudents).HasForeignKey(m=>m.BirthCityId);
     modelBuilder.Entity<Student>().HasRequired(m => m.LivingCity)
               .WithMany(m => m.LivingCityStudents).HasForeignKey(m=>m.LivingCityId);
}

کاربر سایت

amirhosseink

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

  • سه شنبه 17 مهر 1397
  • 14:25

خیلی ممنون ولی من بصورت بالا  کار کردم

به خطای زیر برخوردم میشه بگید دلیل این خطا چیه؟

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

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

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

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