آموزش Code First Data Annotations بخش سوم

آموزش Code First Data Annotations بخش سوم

بسم الله الرحمن الرحیم

 

 

 برای مشاهده سایر بخش های دوره آموزش Code First Data Annotations از طریق لینکهای زیر اقدام نمایید.

 

بخش اول

بخش دوم

بخش سوم

بخش چهارم

 

 

 

بخش سوم

 

Table and Column

اگر شما با Code First دیتابیس خود را ایجاد می کنید، ممکن است بخواهید نام جدول و ستونهای خود را تغییر دهید. شما همچنین می توانید از Code First برای یک دیتابیس که قبلا وجود داشته است استفاده کنید. همیشه این طور نیست که نام جدول ها و ستون ها با نام کلاس ها و پراپرتی ها یکسان باشد.

نام کلاس من Blog بود و بر اساس قرارداد Code First، به صورت پیش فرض این کلاس به یک جدول با نام Blog نگاشت (map) می شود. اگر شما این را نمی خواهید می توانید نام جدول خود را با استفاده از خاصیت Table تغییر دهید.
در اینجا ما برای مثال نام کلاس Blog را برای ایجاد جدول به نام InternalBlogs تغییر داده ایم:

 

[Table("InternalBlogs")] 
public class Blog

 

 

 

 

بسم الله الرحمن الرحیم

 

 

 برای مشاهده سایر بخش های دوره آموزش Code First Data Annotations از طریق لینکهای زیر اقدام نمایید.

 

بخش اول

بخش دوم

بخش سوم

بخش چهارم

 

 

 

بخش سوم

 

Table and Column

اگر شما با Code First دیتابیس خود را ایجاد می کنید، ممکن است بخواهید نام جدول و ستونهای خود را تغییر دهید. شما همچنین می توانید از Code First برای یک دیتابیس که قبلا وجود داشته است استفاده کنید. همیشه این طور نیست که نام جدول ها و ستون ها با نام کلاس ها و پراپرتی ها یکسان باشد.

نام کلاس من Blog بود و بر اساس قرارداد Code First، به صورت پیش فرض این کلاس به یک جدول با نام Blog نگاشت (map) می شود. اگر شما این را نمی خواهید می توانید نام جدول خود را با استفاده از خاصیت Table تغییر دهید.
در اینجا ما برای مثال نام کلاس Blog را برای ایجاد جدول به نام InternalBlogs تغییر داده ایم:

 

[Table("InternalBlogs")] 
public class Blog

 

Column annotation

Column annotation نیز برای تغییر نام یک پراپرتی به فیلد در دیتابیس مورد استفاده قرار می گیرد. با استفاده از این خاصیت شما می توانید نام، data type و حتی ترتیب نمایش این فیلدها را در یک جدول دیتابیس مشخص کنید.

در این جا یک مثال برای خاصیت Column وجود دارد:

[Column(“BlogDescription", TypeName="ntext")] 
public String Description {get;set;}


خاصیت TypeName را با DataAnnotation DataType اشتباه نگیرید. DataType یک annotation هست که برای UI مورد استفاده قرار می گیرد و یادتان باشد که توسط Code Firstاصلا بررسی نمی شود.


در اینجا جدول ما پس باز سازی نمایش داده شده است. نام جدول ما به InternalBlogs و ستون Description که یک  Complex type است به BlogDescription تغییر نام داده شده است. چون ما از annotation برای تغییر نام پراپرتیDescription  استفاده کردیم Code First دیگر از قرارداد خود برای نام گذاری فیلدهای Complex Type استفاده نکرده است.

 

Table and Column Data Annotations

 

DatabaseGenerated

یکی از ویژگی های دیتابیس توانایی داشتن پراپرتی های محاسباتی است. اگر شما کلاس های Code First خود را که شامل فیلدهای محاسباتی هستند نگشات (map) کنید، شما نمی خواهید Entity Framework برای بروزرسانی این ستون ها اقدام کند، اما شما می خواهید EF مقادیر این فیلدها را پس از درج و یا بروز رسانی از دیتاببیس برای شما بازیابی نماید.
شما می توانید با DatabaseGenerated annotation پراپرتی هایی را که می خواهید به عنوان ستون های محاسباتی مشخص شوند، را با گزینه Computed از این enum معین کنید. سایر گزینه های این enum، None  و  Identityهستند.

 

[DatabaseGenerated(DatabaseGenerationOption.Computed)] 
public DateTime DateCreated { get; set; }

 

شما می توانیدdatabase generated  را روی ستون هایbyte  یا  timestampهنگامی که Code First در حال ایجاد دیتابیس شما است، استفاده کنید. دیتابیس تولید شده روی در غیر این صورت شما باید فقط از این ویژگی زمانی استفاده کنید که به دیتابیس های موجود اشاره می شود، زیرا Code First نمی تواند فرمول را برای این ستون محاسباتی مشخص کند.

در ابتدای این مقاله توضیح داده شده که به صورت پیش فرض یک پراپرتی کلید که از نوع int است به کلید منحصر به فرد (identity key) در دیتابیس تبدیل خواهد شد. این کار را شما نیز می توانید با تنظیم DatabaseGenerated به DatabaseGenerationOption.Identity نیز انجام دهید. اگر شما نمی خواهید به یک identity key تبدیل شود، شما می توانید با تنظیم DatabaseGenerationOption.None این کار را انجام دهید.

 

نظرات یا سوالات خودرا با ما درمیان بگذارید

0912 097 5516 :شماره تماس
0713 625 1757 :شماره تماس