ورود

View Full Version : چگونه کلید خارجی را در Fluent API مشخص کنیم ؟



jaykob
دوشنبه 16 تیر 1393, 08:58 صبح
سلام

من یک موجودیت Student دارم و یک Score من در فیلد های موجودیت Score یک فیلد StudentID در نظر گرفتم و می خواهم این فیلد به عنوان کلید خارجی باشه اما هر کدی رو تست کردم یک جای کار مشکل بر خوردم لطفا بگید با استفاده از Fluent API چطور این کار رو بکنم ؟ موجودیت هام رو هم می زارم :


موجودیت دانش آموز :



public class Student
{
public int ID { get; set; }
public long StuCode { get; set; }
public int MelliCode { get; set; }
public string FullName { get; set; }
public string FatherName { get; set; }
public int Year { get; set; }
public byte[] RowVersion { get; set; }
public virtual IList<Score> Scors { get; set; }
}



موجودیت های نمرات :



public class Score
{
public int ID { get; set; }
public string CourseName { get; set; }
public float ScoreVal { get; set; }
public string Status { get; set; }
public byte[] RowVersion { get; set; }
public int StudentId { get; set; }
public virtual Student students { get; set; }
}


خیلی ممنون

helpsos
دوشنبه 16 تیر 1393, 09:42 صبح
استفاده از fluent api فقط در ایجاد ارتباطاط یک به یک لازم است و برای بقیه حالات لازم نداریم
شما مبحث Entity Framework Code first رو در سایت www.dotnettips.info پیگیری کنید همه چیز دستون میاد.
کلش رو توی یک روز می تونی بخونی.

minaforotan
دوشنبه 16 تیر 1393, 14:48 عصر
ارتباط چند به چنده ؟
هر دانش اموز میتونه لیستی از نمره ها رو داشته باشه و هر نمره فقط مال یک دانش اموزه؟
یا
هر دانش اموز میتونه لیستی از نمره ها رو داشته باشه و هر نمره هم میتونه مال چندین دانش اموز باشه؟

jaykob
دوشنبه 16 تیر 1393, 17:14 عصر
استفاده از fluent api فقط در ایجاد ارتباطاط یک به یک لازم است و برای بقیه حالات لازم نداریم
شما مبحث Entity Framework Code first رو در سایت www.dotnettips.info (http://www.dotnettips.info) پیگیری کنید همه چیز دستون میاد.
کلش رو توی یک روز می تونی بخونی.

سلام

بله می دونم که در رابطه ای مثل یک به چند به صورت اتوماتیک کلید خارجی ایجاد می شه اما من می خواهم دستی مشخص کنم که کلید خارجی یکی از پروپرتی های من باشه ...


ارتباط چند به چنده ؟
هر دانش اموز میتونه لیستی از نمره ها رو داشته باشه و هر نمره فقط مال یک دانش اموزه؟
یا
هر دانش اموز میتونه لیستی از نمره ها رو داشته باشه و هر نمره هم میتونه مال چندین دانش اموز باشه؟

سلام

ارتباط یک به چنده هر دانش آموزش می تونه نمراتی رو داشته باشه و هر نمره مربوط به یک دانش آموز است .

ممنون

minaforotan
دوشنبه 16 تیر 1393, 18:07 عصر
خب الان درسته دیگه فقط نباید پراپرتیStudentId را در جدول Score بسازی چون با این دستور public virtual Student students تو جدولت در sql فیلد Student_ID ساخته شده و تو سازنده Student لیستت و باید new کنی به این صورت


public Student()
{
this.Scors = new List<Score>();

}

jaykob
چهارشنبه 18 تیر 1393, 11:29 صبح
خب الان درسته دیگه فقط نباید پراپرتیStudentId را در جدول Score بسازی چون با این دستور public virtual Student students تو جدولت در sql فیلد Student_ID ساخته شده و تو سازنده Student لیستت و باید new کنی به این صورت


public Student()
{
this.Scors = new List<Score>();

}


سلام


ممنون اما من می خواهم که مثلا نام کلید خارجی رو دلخواه بدم یا اینکه delete cascade رو فعال کنم . میشه بگید من نخوام اتوماتیک انجام بشه و خودم بخوام دستی انجام بدم باید چیکار کنم ؟

ممنون

minaforotan
چهارشنبه 18 تیر 1393, 16:45 عصر
برای تنظیم نام دلخواه





public virtual Student نام دلخواه{ get; set; }


و برای دستی انجام شدن دقیقا نمیفهمم که منظوزتون چیه اخه اگه بخواین همه چی دستی باشه چرا اصن اومدین سراغ code first?

در کل چیزی خودکار ساخته نمیشه از تکنیک های هوشمند استفاده میشه و چیزی که نیاز هست و باید ایجاد بشه ساخته شده و اگه بخواین کنترل بیشتری داشته باشد من پیشنهاد میکنم به سایت اقای نصییری یک سری بزنید

hadi0x7c7
چهارشنبه 18 تیر 1393, 21:31 عصر
بهترین کار اینه که شما EF Power tools رو نصب کنید و مدلتون رو ببینید که چطوری شده تا الان.

r4hgozar
چهارشنبه 18 تیر 1393, 23:27 عصر
http://msdn.microsoft.com/en-us/data/jj591620.aspx

helpsos
پنج شنبه 19 تیر 1393, 09:15 صبح
سلام


ممنون اما من می خواهم که مثلا نام کلید خارجی رو دلخواه بدم یا اینکه delete cascade رو فعال کنم . میشه بگید من نخوام اتوماتیک انجام بشه و خودم بخوام دستی انجام بدم باید چیکار کنم ؟

ممنون

سلام
ظاهرا خیلی سر در گم شدین
شما به اینجا http://www.dotnettips.info/post/837/ef-code-first-7 برین تا همه چی دستون بیاد
امیدوارم که موفق باشی