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

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

کاربر سایت

pourya.montakhab

عضویت از 1397/07/14

راهنمایی برای ایجاد ارتباط بین جداول در CodeFirst

  • پنجشنبه 13 دی 1397
  • 21:05
تشکر میکنم

سلام خسته نباشین دوستان . من بانکی رو برای پروژم طراحی کردم به روش CodeFirst و میخام ارتباط بین جدول Titr و Component رو برقرار کنم . این ارتباط به صورت یک به چند هستش به این صورت که هر جدول titr میتونه چند تا component داشته باشه و هر Component فقط میتونه با یک titr در ارتباط باشه . 

این دستور رو در جدول titr نوشتم  : 

public virtual IColection <Component> Component  {get;set;}

این دستور رو هم درون Component نوشتم : 

public virtual Titr titr {get; set;}

اما خطایی که میده اینه که یک لوپ تشکیل میشه و نمیزاره من migration م رو update کنم . 

شمای بانک اطلاعاتیم رو در زیر قرار دادم 

شمای بانکم رو ازینجامشاهده کنید

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

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

سهیل علیزاده

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

  • جمعه 14 دی 1397
  • 11:42

دوست من همیشه باید متن خطا رو به همراه جزئیات آن قرار بدید، تا فردی که میخواهد به شما کمک کنید اطلاعات بیشتری داشته باشد.

به مدل Compnent دو صفت زیر را اضافه کنید اگ کلید اصلی جدول Titr به غیر از int است آن را تغییر دهید:

        public virtual Titr Titr {get; set;}
           public int TitrId {get; set;}

به سراغ DbContext بروید و قطعه کد زیر را به آن اضافه کنید:

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


            modelBuilder.Entity<Component>()
                .HasRequired(x => x.Titr)
                .WithMany(x => x.Components)
                .HasForginKey(x => x.TitrId)
                .WillCascadeOnDelete(false);

        }

کاربر سایت

pourya.montakhab

عضویت از 1397/07/14

  • جمعه 14 دی 1397
  • 13:16

اگر ارتباط بین component و Order  رو حذف کنم و ارتباط بین titr و component رو فراهم کنم . بعدا میتونم به اطلاعات جدول order از داخل component دسترسی داشته باشم ؟ چون component با titr ارتباط داره دسترسی دارم ؟

و اینکه حتما باید از این Fluent Api ها استفاده بشه برای تعریف ارتباطات ؟ اخه فیلد های کلید اصلی و خارجی درون جداولم هم نام هم هستن . 

کاربر سایت

سهیل علیزاده

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

  • شنبه 15 دی 1397
  • 07:34

"اگر ارتباط بین component و Order رو حذف کنم و ارتباط بین titr و component رو فراهم کنم . بعدا میتونم به اطلاعات جدول order از داخل component دسترسی داشته باشم ؟ "

وقتی رابطه ای وجود نداشته باشه، چطوری میخواید بهش دسترسی داشته باشید؟

در برخی موارد نیاز است، در اینجا برای غیر فعال کردن Cascasde delete از آن استفاده کردید.

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

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

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

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