خاصیت Data Annotation در تکنولوژی Code First

سه شنبه 29 اردیبهشت 1394

خاصیت Data Annotation یک فیلد را در مدل اطلاعاتی اعتبار سنجی می کند . برای اختصاص دادن صفتی خاص به یک فیلد در مدل استفاده میشود .در این مقاله به صفتهای مختلف در مدل می پردازیم

خاصیت Data Annotation در تکنولوژی Code First

صفت Data Annotaion فیلدهای موجود در مدل اطلاعاتی را اعتبار سنجی میکند , در ادامه به لیستی از صفات پر کاربرد اشاره میکنیم :

key - فیلد اصلی (primary key) را مشخص میکند

ConcurrencyCheck - برای دستور update در Entity Framework , مقدار مقدار را از ستون ConcurrencyCheck با استفاده از دستورات شرطی دریافت میکند

Entity Framework - Required یک فیلد ایجاد میکند که اجازه خالی رد کردن را نمیدهد .در واقع (Allow Null) نمیباشد .

Range - حد اکثر یا حداقل (Max/min)  : می تواند به رشته یا آرایه ای از کلاسهای مدل نسبت دهیم .

StringLength - تکنولوژی code first حجم ثابت ستونهای تعریف شده را مشخص میکند .


    [DisplayName("First Name :")]  
    [Required]  
    [StringLength(50, MinimumLength = 3, ErrorMessage = "First Name must be between 3 and 50 characters!")]  
    public string FirstName { get; set; }  

Table - این خاصیت برای ایجاد یک جدول با نامی خاص استفاده میشود .

ForeignKey - به صورت پیش فرض این صفت به صورت زیر اجرا میشود :


    //Foreign key for Standard  
    public int StandardId { get; set; }  
    public Standard Standard { get; set; }  

    public int StandardId { get; set; }  
    public string StandardName { get; set; }  

اما رفتار  این صفت را میتوانیم تغیر دهیم .


    public class Student  
    {  
    public Student()  
    {   
      
    }  

    public int StudentID { get; set; }  
    public string StudentName { get; set; }  

    //Foreign key for Standard  
    public int StandardRefId { get; set; }  

    [ForeignKey("StandardRefId")]  
    public Standard Standard { get; set; }  
    }  
      
    public class Standard  
    {  
    public Standard()  
    {   
      
    }  

    public int StandardId { get; set; }  
    public string StandardName { get; set; }  
      
    public ICollection<Student> Students { get; set; }  
      
    }  

NotMapped - اجرای ستونی که ستون پیش فرض ایجاد نشده است . تکنولوژی code first هیچ ستونی که getter و یا setter را ندارد , ایجاد نمی کند .

InverseProperty - تکنولوزی code first  نام کلاس و ستون اصلی را برای هر جدول ایجاد میکند .اگر جدول شما شامل foreign key نباشد , خاصیت InversePropery اگر شما چندین کلاس با رابطه های مختلف داشته باشید استفاده می کند .

Fluent API یکی دیگر از روش های پیکر بندی دامنه کلاسها میباشد .Fluent API قابلیت های بشتری برای پیکربندی فراهم میکند .مفهوم Fluent API یا Fluent Interface به معنی پیاده سازی API شی گرا می باشد که قابلیت خوانایی آن را افزایش می دهد. اما اینکه این فلوئنت در Code First چه کاری انجام میدهد؟ شما می توانید دستور های Mapping را به صورتی بنویسید که قابلیت خوانایی و درک آن بالاتر برود.

 

احسان حسینی

نویسنده 42 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید