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

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

کاربر سایت

hasan_adelian

عضویت از 1394/08/13

ایجاد رکورد اضافی در دیتابیس

  • دوشنبه 21 دی 1394
  • 18:36
تشکر میکنم

سلام

بنده توی سایتم که دارم ثبت نام میکنم، توی یه comboBox رشته شخص رو نیز میگیرم ولی یه مشکلی پیش میاد!!!

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

        public int RegisterStudent(string email, string password, string namefamily, int major, string phonenumber)
        {
            int ResultRegisterStudent = -1;

            var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>();

            var context = new TicketDbContext();
            Major aaa = context.Majors.Where(x => x.MajorId == major).FirstOrDefault();
            var user = new Personal()
            {
                UserName = email,
                Email = email,
                NameFamily = namefamily,
                PhoneNumber = phonenumber,
                RegisterDateTime = DateTime.Now,
                InternalActiveAccont = 0,
                Major=aaa
            };

            IdentityResult result = manager.Create(user, password);

با اینکه من با EF CodeFirst مشخص کردم که جداول Personal و Major یک به چنده، یعنی یه شخص فقط میتونه یه رشته داشته باشه ولی یه رشته میتونه چندین شخص داشته باشه
توی کلاس personal کد زیر رو نوشتم
        public virtual Major Major { get; set; } // One To Many

و توی کلاس Major کد زیر

        public virtual ICollection<Personal> Personals { get; set; } 

و وقتی که ثبت نام میکنم جدول Major به این صورت میشه!!

موقه ثبت نام توی کد مشخص کردم که رشته من آی دیش 1 است ولی نمیدونم چرا خودش سر خود یه رکورد توی جدول رشته با همون مشخصات میسازه!!!

البته برای هر کدوم از جداولم یسری کد برای Config شون نوشتم.
ممنون میشم کمکم کنید

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

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

اصغر

عضویت از 1394/03/16

  • دوشنبه 21 دی 1394
  • 21:12

سلام 
برای ایجاد رابطه یک به چند باید در جدول personal از MajorID هم استفاده کنید...

کاربر سایت

hasan_adelian

عضویت از 1394/08/13

  • دوشنبه 21 دی 1394
  • 22:47
ممنون دوست عزیز بنده هم استفاده میکنم!! وقتی که میخوام MajorID رو در Personal مقداردهی کنم این اتفاق می افته و یه رکورد اضافی توی Major ایجاد میکنه(توی عکس نشون دادم چه اتفاقی میوفته)
کاربر سایت

ایمان مدائنی

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

  • سه شنبه 22 دی 1394
  • 10:36

در کدها ندیدم از MajorID استفاده کنید

کد استفاده را قرار دهید

کاربر سایت

hasan_adelian

عضویت از 1394/08/13

  • سه شنبه 22 دی 1394
  • 12:29
var context = new TicketDbContext();
    Major aaa = context.Majors.Where(x => x.MajorId == major).FirstOrDefault();

بعد از تعریف context ، رکوردی از جدول Major رو برگرداندم که آی دیش با آی دی رسته ای که بنده از ورودی میگیرم برابر باشه.

و بعد در کدی که یک Person اد میکنم

    var user = new Personal()
    {
.
.
.
        Major=aaa
    };

رشتش رو با aaa برابر میکنم

به نظر شما مشکل از کجاست؟؟

کاربر سایت

ایمان مدائنی

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

  • سه شنبه 22 دی 1394
  • 12:54

من اصلا از کدهاتون سر در نمیارم متاسفانه

 

کاربر سایت

hasan_adelian

عضویت از 1394/08/13

  • سه شنبه 22 دی 1394
  • 13:18

میشه لطفا یه کد مثال برام بزارید که مثلا بخوام به یه جدول یوزر یه رشته نصبت بدم ؟

کاربر سایت

اصغر

عضویت از 1394/03/16

  • سه شنبه 22 دی 1394
  • 19:21


شما گفتید :
توی کلاس personal کد زیر رو نوشتم
        public virtual Major Major { get; set; } // One To Many

و توی کلاس Major کد زیر

        public virtual ICollection<Personal> Personals { get; set; } 


لازمه که در کلاس Personal یک پراپرتی از نوع Primary Key جدول طرف مقابل استفاده کنید.

public int​ MajorID {get; set;}
 

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

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

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

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