نمایش نتایج 1 تا 4 از 4

نام تاپیک: تعریف 2 تا کلید خارجی در یک جدول

  1. #1

    تعریف 2 تا کلید خارجی در یک جدول

    سلام
    آیا این 2 دستور برای تعریف 2 تا کلید خارجی درسته؟
    من در یک جددول 2 تا کلید خارجی دارم
    public config()            {
    HasRequired(current => current.tblRole).WithMany(Role => Role.tblUsers).HasForeignKey(current => current.RoleId).WillCascadeOnDelete(false);
    HasRequired(current => current.tblState).WithMany(Role => Role.tblUsers).HasForeignKey(current => current.StateId).WillCascadeOnDelete(false);
    }

  2. #2
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: تعریف 2 تا کلید خارجی در یک جدول

    اگر شما در یک جدول دوتا کلید خارجی دارید بهتره از Attribute Inverse Property بهره ببیرد
    به دلیل اینکه فیلدهای اضافی و با اسامی نا مفهوم در چدول بوجود نیاید


    public class User
    {
    public int UserId { get; set; }
    public string UserName { get; set; }


    [ForeignKey("RoleId ")]
    public Role Role{ get; set; }
    public int RoleId { get; set; }

    [ForeignKey("RoleId1 ")]
    public Role Role1{ get; set; }
    public int RoleId1 { get; set; }
    }

    public class Role
    {
    public int RoleId { get; set; }
    public string Name { get; set; }

    [InverseProperty("Role")]
    public ICollection<User> Users1{ get; set; }
    [InverseProperty("Role1")]
    public ICollection<User> Users2{ get; set; }
    }


    دقت کنید در کلاس Role عنوان InverseProperty تنظیم شده به Role وRole1 و باید در کلاس User هم نام Navigation Property هاتون همین نام داشته باشد
    مثل:

    public Role Role{ get; set; }public Role Role1{ get; set; }

    نیازی به کلاسهای Config و Fluent Api هم ندارید با همین DataAnnotations Attributes میتونید به راحتی روابط را برقرار کنید

  3. #3

    نقل قول: تعریف 2 تا کلید خارجی در یک جدول

    اگر شما در یک جدول دوتا کلید خارجی دارید بهتره از Attribute Inverse Property بهره ببیرد
    ممنون
    پراپرتی InverseProperty چه کار می‌کند؟
    InverseProperty آیا نام فیلدها را تغییر می‌دهد؟
    چرا در کلاس user از InverseProperty استفاده نشده؟
    آخرین ویرایش به وسیله kamran_14 : جمعه 29 تیر 1397 در 10:38 صبح

  4. #4
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: تعریف 2 تا کلید خارجی در یک جدول

    مباحثی به عنوان Principal و Dependent در بحث روابط یک به چند و سایر روابط مطرح هست
    Principal یک سر رابطه(کلید اصلی) و Dependent سر دیگر رابطه هست(طرفی که کلید فرعی هست)
    یعنی یک رابطه دو سر دارد و هر سر باید سر خود را پیدا کند(ببخشید خیلی سر تو سر شد دیگه )

    مثلا فرض کنیم کلاس Role داریم و Principal هست یعنی کلید اصلی
    و یک کلاس دیگر داریم بنام User و Dependent هست , در کلاس Users ممکن است دو تا کلید خارجی از نوع کلاس Role داشته باشیم یا در واقع دو گروه Role داشته باشیم

    برای اینکه هم ef و هم ما قادر به شناسایی این رابطه ها باشیم که بدانیم کدام سر Principalبه کدام سر Dependent متصل هست از ویژگی InversePropety بهره میبریم

    در ضمن نیازی نیست الزاما از InverseProperty بهره ببریم ولی برای همون مواردی که در بالا گفتم بهتر هست بکار ببریم
    شما یکبار بدون InverseProp بکار ببرید و مراجعه کنید به جدول بانک برنامه ببینید چه اتفاقی افتاده
    میببیند که 4 فیلد تشکیل شده و اگر InverseProp استفاده کنید تنها دو فیلد تشکیل شده

    و تعریف InverseProperty در یک سر رابطه و اونهم بخش Principal کفایت میکند
    و نیاز نیست در سر دیگر رابطه تعریف شود

تاپیک های مشابه

  1. صدا زدن دو کلید خارجی در یک جدول !
    نوشته شده توسط تبسم ساینا در بخش T-SQL
    پاسخ: 0
    آخرین پست: جمعه 12 دی 1393, 14:38 عصر
  2. پاسخ: 7
    آخرین پست: دوشنبه 04 آذر 1392, 10:38 صبح
  3. مشکل در تحلیل ارتباط کلید خارجی در یک جدول که با هم کلید اصلی هستند
    نوشته شده توسط mosadatta در بخش تحلیل و طراحی بانک اطلاعات
    پاسخ: 2
    آخرین پست: شنبه 23 دی 1391, 10:26 صبح
  4. استفاده از چند کلید اصلی در یک جدول
    نوشته شده توسط maryam206 در بخش Access
    پاسخ: 12
    آخرین پست: دوشنبه 06 دی 1389, 17:05 عصر
  5. مشکل درج دو فیلد خارجی در یک جدول ...
    نوشته شده توسط احد در بخش SQL Server
    پاسخ: 2
    آخرین پست: یک شنبه 13 اردیبهشت 1383, 10:05 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •