PDA

View Full Version : نحوه نشان دادن رابطه ها با ليست؟



bftarane
یک شنبه 25 فروردین 1392, 22:10 عصر
سلام.
قبل از پرسيدن عذرخواهي مي کنم اگه اصطلاحات رو اشتباه مي گم چون من حدوداً 1 روزه کار با asp.net MVC رو شروع کردم.
حالا جداولم رو ميخوام تبديل به کلاس کنم (در واقع همون Model Class)

به من گفته شده رابطه بين جداول رو با ليست نشون بدم کسي اين رو بلده در يه نمونه به من توضيح بده؟
مثلاً ما دو تا جدول داريم که رابطه يک به چند بينشون وجود داره اين رابطه رو چطوري در کلاس مدل نشون ميديم؟

amirashna
چهارشنبه 28 فروردین 1392, 11:33 صبح
خب شما الان Code First کار می کنید؟
یا جدول ها رو توی SQL Server ایجاد کردید؟

bftarane
جمعه 30 فروردین 1392, 19:59 عصر
ببخشيد الآن پاسخ شما رو ديدم.
نه. Code First قراره کار کنيم.

bftarane
جمعه 30 فروردین 1392, 22:03 عصر
بزاريد سوالم رو بهتر بپرسم

فرض کنيد مي خواهيم بخش تايپ نامه در يک سيستم اتوماسيون رو بنويسيم به روش Code First بنويسيم با Asp.net Mvc و Entity FrameWork
tblDocument يه جدول براي فيلدهاي ضروري تايپ نامه (مثل شناسه، عنوان) در نظر داريم
و tblProperty يه جدول براي فيلدهايي که بعداً ممکنه به درخواست مشتري ايجاد بشه مثلاً يه مشتري مي گه اين سند که قراره ثبت بشه بايد شماره شناسنامه گيرنده نامه هم درج بشه
خوب از نظر من جدول document يک رابطه يک به چند با جدول property داره و همين طور جدول document يه رابطه يک به چند با جدول attachment داره
خوب حالا من کلاس هاي زير رو نوشتم به نظرتون درست رابطه ها رو نشون دادم؟ کلاً اگه ايراد و اشکال و پيشنهادي به نظرتون مي رسه لطفاً بگيد.

public partial class Document
{
public int docId { get; set; }
public string docTitle {get; set;}
public string docContent {get; set;}
public string docSender {get; set;}
public sting docReciver {get; set;}
public DateTime docRegDate {get; set;}
public DateTime docSendDate {get; set;}
public int docStatus {get; set;}
public string docType {get; set;}
public virtual List<Attachment> Attachments { get; set; }
public virtual List<property> Properties {get; set;}
}
public partial class Property
{
public int docId {get; set;}
public string PropertyName {get; set}
public string PropertyValue {get; set}
}
public partial class Attachment
{
public int docId {get; set;}
public int AttachmentId {get; set;}
public string FileName {get; set;}
public byte[] content {get; set;}

}

amir-yeketaz
شنبه 31 فروردین 1392, 11:27 صبح
نکات :
- آی دی هر کلاس را به الگوی ClassName]Id] بنویسید (مثلا برای Document بنویسید DocumentId) زیرا ef code first به صورت پیش فرض این الگو را کلید اصلی خواهد شناخت یا ویژگی با نام Id ... البته میتوانید با گذاشتن اتریبیوت Key به EF بگویید که کلید من این است!

- حرف اول هر ویژگی باید بزرگ باشد (قواعد کدنویسی در دات نت!)

-موقعی که کلاس Document را تعریف کرده اید نیازی به آوردن doc در اول هر ویژگی نیست

- برای کلاس Property ، کلید اصلی مشخص کنید!

- طرف ارجاعی (Attachment و Property) را با آیدی کلاس Document و یک ویژگی از جنس داکیومنت مشخص کنید

نمونه ی اصلاح شده :

public class Document
{
public int DocumentId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public string Sender { get; set; }
public string Reciver { get; set; }
public DateTime RegDate { get; set; }
public DateTime SendDate { get; set; }
public int Status { get; set; }
public string Type { get; set; }

public virtual List<Attachment> Attachments { get; set; }
public virtual List<Property> Properties { get; set; }
}

public class Property
{
public string PropertyId { get; set; }

public string PropertyName { get; set; }
public string PropertyValue { get; set; }

public int DocumentId { get; set; }
public Document Document { get; set; }
}

public class Attachment
{
public int AttachmentId { get; set; }
public string FileName { get; set; }
public byte[] Content { get; set; }

public int DocumentId { get; set; }
public Document Document { get; set; }

}

موفق باشید ...