Koray Kırdinli

Yazılım ve İş Yaşamı Hakkında Paylaşımlar

Partial sınıfların gücü (Entity Framework)

Merhabalar arkadaşlar.
Partial(parçalı) sınıflar fiziksel olarak farklı dosyalarda aynı sınıf ismiyle oluşturulan ve çalışma zamanında compiler tarafından birleştirilen sınıflardır. Sınıflarda olduğu gibi struct ve interface’lerde de aynı şeyi yapabiliriz.

public partial class Employee
{
    public void DoWork()
    {
    }
}

public partial class Employee
{
    public void GoToLunch()
    {
    }
}

Yukardaki örnekte 2 farklı cs dosyasında tek bir sınıfın farklı metodları tanımlanmıştır. Bu yapı özellikle tek sınıf üzerinde çalışacak birden fazla kişinin aynı anda çalışabilmesini kolaylaştırmaktadır. Partial sınıfları kısaca tanıdıktan sonra asıl anlatmak istediğim konuya gelelim.
Örneğin projenizde Entity Framework kullanıyorsunuz ve veritabanında FirstName ve LastName isminde ayrı ayrı kolonlarınız var ancak kod içerisinde bu alanları birleştirerek FullName olarak da kullanmak istiyorsunuz diyelim. Bu noktada partial sınıflardan faydalanabiliriz.

public partial class Employee
{
public string FullName
{
get
{
using (DataContext ctx = new DataContext())
{
Employee emp = ctx.Employees.SingleOrDefault(c => c.ID == this.ID);
StringBuilder sb = new StringBuilder();
sb.Append(emp.Firstname);
sb.Append(" ");
sb.Append(emp.Lastname);
return sb.ToString();
}
 }
}

Abartıp bir partial class daha ekleyelim.

public partial class Employee
{
    public decimal Salary
    { get { return Hours*Wage; } }
}

Entity framework sınıfları bunu yapmamıza olanak sağlıyor çünkü o da bütün sınıflarını partial olarak oluşturuyor.

Herkese iyi günler dilerim.

March 21, 2012 - Posted by | C# | , , ,

No comments yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s