مجموعه نکات کاربردی در EntityFrameWork
در این ساعت از فکر بکر مطالبی هرچند ناچیز اما کاربردی از EntityFrameWork را برای شما دوستان و دانشجویان کامپیوتر ارائه خواهم کرد البته این تمام نکات نیست و در آینده نزدیک مطالب بیشتری را بر روی سایت قرار خواهم داد.
نکته 1 : در صورتیکه در سولوشن چندین پروژه داشته باشیم و بخواهیم از طریق پاورشل یک دی ال ال یا فایل کتابخانه ای را روی یک پروژه منحصر به فرد نصب کنیم از فرمان زیر استفاده میکنیم.(به عنوان مثال نحوه نصب EntityFrmeWork)
Install-package EntityFrmeWork –ProjectName projectname
projectname نام پروژه ای است که قرار است فایل بر روی آن نصب شود.
نکته 2 : سازنده ی استاتیک در کلاسی که دیتابیس را میسازد (کلاسی که از dbcontext ارث بری میکند )موقعی اجرا میشود که برای اولین بار شیء این کلاس فراخوانی شود یا عضو استاتیکی از این کلاس فراخوانی شود.
نکنه 3 : جهت تغییر نام دیتابیس از سازنده پیش فرض کلاسی که دیتابیس را ایجاد میکند به صورت زیر استفاده میکنیم
public DatabaseContext(): base(DatabaseName)
DatabaseName نام دیتابیسی است که شما بصورت یک رشته درج میکنید
//نام دیتابیس برابر با رشته ای که در سازنده پیش فرض قرار دادیم میشود
{
}
در قطعه کد بالا DatabaseContext نام سازنده فرضی میباشد.
نکته 4 : تگ connection string باید در فایلهای کانفیگ بعد از بسته شدن تگ configSetings قرار گیرد
نکته 5 : رشته اتصال را میتوانیم با استفاده از فایل با پسوند udl نیز ایجاد نماییم.
نکته 6 : در صورتیکه در برنامه از connectionstring درون فایل webconfig یا appconfig استفاده نکنیم محل استقرار دیتابیس در نسخه sqlexpress و یا نسخه دیگری(localDB\V11.0) که بصورت توکار در حین نصب vs ایجاد میگردد میباشد
نکته 7 : جهت تغییر نامهای پیشفرضی که برای جداول و ستونهای ان در نظرمیگیرد به صورت زیر عمل میکنیم.
[System.ComponentModel.DataAnnotations.Schema.Table[TableName]]
TableName نام جدولی است که شما بصورت رشته درج میکنید.
جهت تغییر نام جدول این کد را قبل از نام کلاس مینویسیم//
نکته 8 : در صورتیکه فیلد ID ازنوع عدد را میخواهیم منحصر به فرد باشد به صورت زیر عمل میکنیم.
public Country()نام سازنده پیشفرض کلاس میباشد
{
ID = System.Guid.NewGuid();
}
در کد بالا فیلد ID را منحصر به فرد قرار دادیم بنابراین نیازی نیست که auto increment باشد پس دستور زیر را بر روی نام این فیلد قرار میدهیم تا از حالت Auto increement خارج شود.
[System.ComponentModel.DataAnnotations.Schema.DatabaseGenerated
(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.None)]
تنظیمات دیگر برای این فیلد به همراه توضیحات درج میشود.
[System.ComponentModel.DataAnnotations.Schema.Column("CountryId")]//تغییر نام ستون
[System.ComponentModel.DataAnnotations.Key]//کلید اصلی است
[System.ComponentModel.DataAnnotations.Required]//درج مقدار ان برای کاربر ضروری است
خاصیت زیر برای فیلد از نوع رشته ای میباشد.
[System.ComponentModel.DataAnnotations.MaxLength(100)] حداکثر طول ان 100 کاراکتر باشد
نکته 9: در صورتیکه یک فیلد فقط از نوع get باشد دیگر تبدیل به ستون در جدول دیتابیس نمیشود اما اگر set را هم داشته باشد تبدیل به ستون جدول خواهد شد و برای جلوگیری از اینکار از کد زیر میتوان استفاده کرد.
[System.ComponentModel.DataAnnotations.Schema.NotMapped]
نکته 10 : در صورتیکه در یک کلاس دو فیلد را از طریق پارمتر بصورت کلید اصلی قرار دهید برنامه فقط فیلد اول را کلید در نظر میگیرد ، برای حل این مشکل باید از مقدار order که در بالا توضیح دادم استفاده نمایید به این صورت که مقدار یکی را صفر و دیگری را یک در نظر بگیرید.
در بخش کد نویسی دو فضای نام زیر را در برنامه قرار دهید.
using System.Data.Entity;
using System.Linq;
نکته 11 : جهت AllowNull کردن فیلد آنرا بصورت زیر تعریف میکنیم.(از علامت سوال استفاده میکنیم)
public string? City;
نکته 12 : برای ایجاد نوع دلخواه برای فیلد و شماره ترتیب آن از کد زیر استفاده میکنیم.
[System.ComponentModel.DataAnnotations.Schema.Column
("نام ستون درج شود",Order=0 , TypeName="varchar")]
شماره ترتیب به محل قرار گیری ستون در جدول اشاره میکند.
نکته 13 : درصورتی که قسمت Models را در classlibrary بصورت یک پروژه مجزا قرار میدهید بهتر است نام کلاسهای موجود در انرا بصورت public قرار دهید.
نکته 1 + 13 : منتظر نظرات شما دوستان گرامی هستیم