PDA

View Full Version : چند تا سوال ابتدایی



EnKamran
سه شنبه 29 بهمن 1392, 03:24 صبح
سلام دوستان.
می خوام بدونم توی MVC بهتره از ADO.NET استفاده کنیم یا EF؟
حالا توی ADO.NET اگر از SP استفاده کنیم بهتره یا کوئری رو به صورت استرینگ همونجا بنویسیم؟
و سوال بعدی این که جریان Migrations چیه؟
و اینکه مثلا من پروژم رو درست کردم و الان داره کار میکنه حالا یه فیلد میخوام به مدل(دیتابیسم) اضافه کنم، اگر اضافه کنم اطلاعات قبلی پاک میشه توی Code First ؟

سید علی گتمیری
سه شنبه 29 بهمن 1392, 08:11 صبح
ج1 - قطعا EF مگر اینکه جایی خیلی سرعت واستون مهم باشه

ج2 - SP (دلیل 1 : رفع اشکال ساده تره - یعنی اگه پروژه بزرگ شد و شما تغییراتی در اسامی دادید تو SP راحت تر مشخص میشه ) (دلیل 2 : یه مقدار بستگی به شرایط سرعت بالاتره )

ج3- نمی دونم - Code First رو عملی کار نکردم

ج4- بستگی به نوع ساخت ممکنه حالتی باشه که دیتابیس رو پاک میکنه و از اول می سازه که باید برید و در فایل مربوطه کد مربوط رو عوض کنید که جزییاتش رو دیگه همه بلدن غیر از من

ali_autumnal
سه شنبه 29 بهمن 1392, 12:06 عصر
جواب سوال 3: مراجعه به لینک (http://www.dotnettips.info/post/834/ef-code-first-4)

جواب سوال 4: در صورت استفاده از Migrations اطلاعات قبلی پاک نمی شود. فقط دیتابیس Update خواهد شد. فیلد های جدید اضافه شده در جدول ها بصورت پیش فرض Null خواهند گرفت.

EnKamran
چهارشنبه 30 بهمن 1392, 01:17 صبح
یه سوال دیگه داشتم :
من دو تا حدول دارم : News و Category که مثلا عنوان خبر و آی دی رو داره و دسته ها هم عنوان دسته و آی دی دسته رو داره
قبلا که با Database First کار میکردم خوب دوتا جدول رو میساختم و یک فیلد CategotyID هم به حدول اخبار اضافه میکردم که میشد همون کلید خارجی که شماره دسته رو میگرفت، حالا توی Code First باید به صورت زیر باشه:


public class Category(){
public virtual int Id {get;set;}
public virtual string CategoryTitle {get;set;}
public ICollection<News> NewsList {get;set}
}

// News
public class Category(){
public virtual int Id {get;set;}
public virtual string NewsTitle {get;set;}
public virtual int IdDasteBandi {get;set}
}

خوب حالا وقتی دیتابیس رو آپدیت میکنم(update-database) یک فیلد اضافه میشه به اسم Category_Id نمیشه این رو اسمی که خودم میخوام بذارم؟
شماره دسته رو توی جدول خبرها عمدا نوشتم IdDastebanid چون وقتی این باشه خودش یک فیلد به اسم Category_Id درست میکنه مگر اینکه از قبل همین فیلد رو بذارم، حالا سوال اینه که نمیشه خودم بگم فیلد IdDastebandi رو وصل کن به شماره دسته تو جدول دسته ها؟

یا راحتتر بگم خودم انتخاب کنم اسم فیلدی که کلید خارجی هست و میخوام تو جدول مقصد(many) نمایش داده بشه
سوال دیگه اینکه فرق ICollection با IList چیه؟ که یجا میگن باید IList باشه باز یه آموزش دیگه میگه ICollection باشه!؟