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

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

کاربر سایت

delamtangete

عضویت از 1393/07/08

دو ارتباط یک به چند بین دو جدول Users,Pages

  • یکشنبه 24 بهمن 1395
  • 18:09
تشکر میکنم

اساتید عزیز خسته نباشید

بنده با یه مشکلی مواجه شدم.در تعریف کلاس ها به روش EF Code First به حالت زیر مشکلی که پیش میاد جدول Pages چهار تا کلید خارجی داره! در صورتی که باید دو تا داشته باشه.آیا در نحوه تعریف بنده ایرادی هست؟

در حالت کلی میخوام کاربری که رکورد رو ثبت کرده و کاربری که رکورد رو ویرایش کرده رو در جدول Pages داشته باشم

تعریف کلاس Pages:

 public class Page
    {
        internal class Configuration : System.Data.Entity.ModelConfiguration.EntityTypeConfiguration<Page>
        {
            public Configuration()
            {
                HasRequired(current => current.ApplicationInsUser)
                    .WithMany(user => user.InsertedPages)
                      .HasForeignKey(current => current.ApplicationInsUserId)
                    .WillCascadeOnDelete(false);
                HasOptional(current => current.ApplicationEditUser)
                    .WithMany(user => user.EditedPages)
                    .HasForeignKey(current => current.ApplicationEditUserId)
                    .WillCascadeOnDelete(false);
            }
        }
        public Page()
        {
            //   CreateTime = DateTime.Now;
        }
        [Key]
        public int id { get; set; }
        public string Onvan { get; set; }
        [System.Web.Mvc.AllowHtml]
        public string Content { get; set; }
        public string ApplicationInsUserId { get; set; }
        public virtual ApplicationUser ApplicationInsUser { get; set; }
        public string ApplicationEditUserId { get; set; }
        public virtual ApplicationUser ApplicationEditUser { get; set; }
    }
}

و همچنین کلاس Users:

public virtual ICollection<Page> InsertedPages { get; set; }
public virtual ICollection<Page> EditedPages { get; set; }

وقتی فقط InsertUser رو به عنوان کلید خارجی تعریف میکنم مشکلی نیست و دیتابیس خیلی خوب و با یک کلید خارجی جنریت میشه اما وقتی EditUser رو هم اضافه میکنم کلید خارجی بجای 2 تا 4 تا ایجاد میشه !!!!

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

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

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 24 بهمن 1395
  • 22:17

بالای Navigation Property ها صفت forienKey بزارید و نام فیلد را در  اون بنویسید تا مشخص شود کدام مربوط به کدام کلید خارجی است

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

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

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

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