۶ مطلب با کلمهی کلیدی «EntityFramework» ثبت شده است
آموزش Entity Framework
بسم الله الرحمن الرحیم
ممکن است شما بخواهید یک enumایجاد کنید و سپس این enum را در دیتابیس ذخیره کنید.برای این کار کافی است کد زیر را Model خود قرار دهید
public DataKind Kind { get; set; }
که در واقع DataKind یک enum است که قبلا به صورت زیر تعریف شده است
namespace Ad.NegCred.Data.Model {
public enum DataKind {
F, //Takibe alınıp henüz tahsil edilmeyen ferdi kredi bildirimi
FA, //Aynı dönemde takibe alınan ve tahsil edilen ferdi kredi bildirimi
FF, //daha önceki dönemlerde takibe alındığı bildirilmiş ferdi kredi tahsil bildirimi
K, //Takibe alınıp henüz tahsil edilmeyan kredi kartı
KA, //Aynı dönemde takibe alınan ve tahsil edilen kredi kartı
KF //Daha önceki dönemlerde takibe alındığı bildirilmiş kredi kartı tahsil bildirimi
}
public class Datum {
[Key]
public long Id { get; set; }
public DataKind Kind { get; set; }
[StringLength(25, MinimumLength = 2)]
public string Name { get; set; }
}
}
حال اگر بخواهیم یک مثال کامل داشته باشیم، کد Model و enum ما به صورت زیر خواهد بود
namespace Ad.NegCred.Data.Model {
public enum DataKind {
F,
FA,
FF,
K,
KA,
KF
}
public class Datum {
[Key]
public long Id { get; set; }
public DataKind Kind { get; set; }
[StringLength(25, MinimumLength = 2)]
public string Name { get; set; }
}
}
حال اگر پروژه را اجرا کنید متوجه خواهید شد که فیلد enum به دیتابیس اضافه نشده است!؟
علت؟
EF 5 و .NET Framework 4 نمی تواند فیلد enum را ایجاد کند زمانی که System.Data.Entity.dll در .NET Framework 4 به وسیله EntityFrameork.dll استفاده می شود این کار صورت نخواهد گرفت برای حل این مشکل می بایست از EF5 و .NET Framework 4.5 با یکدیگر یا EF6 و.NET Framework 4 استفاده کنید که دیگر در اینجا (EF 6) ارتباطی با کامپوننت های داخلی NET Framework. ندارد.
Entity Farmework و Code First
بسم الله الرحمن الرحیم
برای طراحی پایگاه داده به وسیله Entity Farmework و Code First بهتر است این چند نکته را رعایت فرمایید:
بهتر است از نام Id به عنوان نام تمامی کلید های اصلی جداول استفاده کنید هر چند در بحث
convention over configuration این نکته مورد قبول است اما چیزی را که همه آن را به عنوان یک قرارداد نانوشته قبول دارند را عوض نکنید تا برای انجام کار توضیحاتی لازم نباشد.
بهتر است از نوع GUID برای کلید های اصلی جداول استفاده کنید. نوع int از لحاظ واکشی اطلاعات سریعتر است زیرا مقایسه عددی سریعتر از مقایسه رشته ای است.
باید در نظر داشته باشید در جداولی مثل شهر، استان، کشور می توانید از نوع int برای کلید اصلی استفاده کنید و هیچ مشکلی نخواهد بود اما بهتر است برای جداول اطلاعاتی که شماره ها بسیار ارزشمند هستند و بهتر است در کل دیتابیس عدد منحصر به فرد باشد از نوع GUID استفاده شود.
بهتر است نام کلیدهای خارجی یک نام از جدول + کلمه ای دی باشد:
مثلا: ProductId
برای تعیین نامی مشخص برای ذخیره property ها در دیتابیس می توانید به صورت زیر عمل کنید:
[Column(“ProductId", TypeName="Guid")]
با توجه به اینکه در MVC به صورت پیش فرض اگر Maxlength برای یک Property String تعیین نشود nvarchar(MAX) در دیتابیس در نظر گرفته می شود، لذا برای تمامی Property مقدار Maxlength را تعریف کنید مگر در شرایطی که نیاز به رشته های طولانی دارید.
با توجه به نحوه ذخیره سازی رشته ها در SQL Server ، اگر یک رشته می تواند در نوع nvarchar(300) ذخیره شود از این نوع استفاده کنید.
با توجه به اینکه در Entity Framework 6 از روی نوع enum فیلد مناسب در دیتابیس ساخته می شود اما بهتر است فیلدهای از نوع enum به صورت int تعریف شوند و شما خودتان نوع بازیابی شده از دیتابیس را به enum تبدیل کنید.
مثلا
Public int CustomerType {get; set;};
در نام گذاری property ها این نکته را در نظر داشته باشید که نباید از کلمات کلیدی (SQL Server,Oracle,…) استفاده کنید
مثلا: [Order]
بازیابی دیتابیس (Restore) به وسیله EntityFarmework
بسم الله الرحمن الرحیم
در پروژه های MVC شما نیاز خواهید پیدا کرد که دیتابیسی که به وسیله Entity Framework (معمولا در روش Code First) تغییر پیدا کرده است را به حالت قبل بازیابی کنید.
به ازای هر بار درخواست تغییر دیتابیس توسط EF یک شماره منحصر به فرد ایجاد می شود که می توانید در دیتابیس خود در تیبل Migration__ این پارت ها را مشاهده کنید.
برای برگرداندن دیتابیس خود به مرحله قبل می توانید به صورت زیر عمل کنید:
Update-Database -Target 2556
2556 شماره حالتی است که قبل از اعمال تغییرات ثبت شده بوده است.
برای رفتن اولین مرحله نیز می توانید به صورت زیر عمل کنید:
Update-Database -Target 0
ساخت یک پروژه MVC
بسم الله الرحمن الرحیم
ساخت یک پروژه MVC
بهترین نسخه برای ایجاد پروژه در حال حاضر نسخه MVC 4 می باشد که بهتر است به صورت زیر ایجاد شود
1- MVC 4
2- NET 4 (در مورد معایب 4.5 NET توضحاتی در این بخش ارائه کردم )
3- EF 5 (در مورد معایب EF 6 توضحاتی در این بخش ارائه کردم )
4- نوع پروژه را Internet انتخاب کنید به دلیل نصب شدن یک سری از Package ها به صورت پیش فرض
آموزش Migrations و EntityFramework
بسم الله الرحمن الرحیم
آموزش Migrations و EntityFramework
برای استفاد از EF Code First بهتر است از نسخه Migrations استفاده کنید برای استفاده از این نسخه می بایست ابتدا EF را نصب نمایید
Install-Package EntityFramework
و سپس دستور
Enable-Migrations
را اجرا کنید اگر پروژه را قبلا با Migrations اجرا کردید و حال می خواهید نسخه EntityFramework تغییر دهید و مجدد Migrations را فعال کنید حتما دیتابیس را حذف کنید به این دلیل که مشکلات زیادی را خواهید داشت اگر داده ارزشمندی در دیتابیس دارید می توانید برای از بین نرفتن داده ها اطلاعات جدول Migrations_ که در دیتابیس شما وجود دارد را حذف کنید
نکته ای در ارتباط با EntityFramework 6 و MVC
بسم الله الرحمن الرحیم
نکته ای در ارتباط با EntityFramework 6
و MVC
نسخه 6 EntityFramework
نمی توانید از Scaffolding پشتیبانی کند البته این مربوط به این زمان است ممکن است این مشکل بر طرف شود پس بهتر است به جای
Install-Package EntityFramework -Version 6.1.0
یا نسخه های بالاتر از نسخه 5 استفاده کنید این نسخه آخرین نسخه ای است که ازScaffolding پشتیبانی می کند
Install-Package EntityFramework -Version 5.0.0