Code First Attributes
Code First ün class ve propertyler için defaultta belirli bir dizi nitelikler atadıgını
soylemiştim şimdi bu nitelikleri değiştirmek için kullanacağımız bir diğer yapı olan
DataAnnotation kısmını inceleyelim Bu yontem Code First e benim class ve
propertylerimin ne olacağına ben karar veririm diyor yeri gelmişken söyleyelim
kontrol gücü ve daha fazla özelliği barındırması bakımından bu 2 yöntemi
kıyaslarsak API Fluent yontemi daha güçlüdür. Öncelikle DataAnnotation isim
uzayına ait propertylere erişmek için namespaceler eklenmelidir
Propertylerin kullanımına ornek verecek olursak;
Yukarıdaki sınıfımızda Primary key olarak olarak ProfesorNo belirlendi,yine aynı
şekilde ProfAdi propertysine string karakter uzunlugu olarak 5-50 arasında
girmesi gerektiğini soyleyen ,girmemesi durumunda hata mesajı veren,Adres
alanının boş bırakılamayacağını yani NULL geçilemeyeceğini belirten
DataAnnotation tipleri kullanıldı.
Görüldüğü gibi bu yöntemde propertylere özellik atamak çok hızlı şekilde
yapılabiliyor.
Şimdi kullanabileceğimiz diğer [Link] ve
[Link] attributeleri nelerdir bunları
inceleyelim
[Link] isim uzayı altında;
Key: PK olarak belirlenecek alan yani EntityKey olan kısımdır.
Örneğin Class içindeki iki özelliği beraber Primary key olarak işaretlemek istersek
Timestamp: Sadece byte[] tipindeki özelliklere uygulanabilir.
Required:Boş bırakılamaz alanlara(propertylere) uygulanı[Link]ıda ornegi
bulunuyor
MinLength:Veritiplerinin en az ne kadar very uzunluguna sahip olacagı
[Link] yada array ifadelerin uzunlugu bellirtilir
MaxLength: Veritiplerinin en fazla ne kadar veri uzunluguna sahip olacagı
bildiriliyor. String yada array ifadelerin uzunlugu belirtilir
Bu örnekte StudentName alanı en az 2 en fazla 50 karakter uzunluguna sahip
olacaktır StringLength: Sınıflarda string tipteki propertylere uygulanabilir.
Yukarıda örnegi [Link]
altındakiler ise;
Table: Tablo adı sınıf adı ile eşleştirilir.
Column: Sınıf propertysi ile Sutun adı ve veri tipleri eşleştirilir
Foreign Key: Navigasyon özelliği için yabancı anahtar özelliği belirtilir.
NotMapped :Class içindeki bir property değerini database de olusturmak
isteniyorsak bu özellik kullanılmalıdır.