XPO ile O\R MAPPING -2
Merhabalar, bu makale serimizde Object Relational Mapping kavramından ve DevExpress ürün ailesine ait XPO ile temel veritabanı işlemlerimizi nasıl yapabileceğimizden bahsedeceğiz.
Bu makalemizde temel ekleme, çıkarma, güncelleme, veri getirme ve kümeleme işlemlerinden bahsedeceğiz.
Ekleme Çıkarma Güncelleme Getirme:
Bu işlemleri yapmadan önce elimizde bulunan veritabanına göre sınıfımız oluşturalım.
class proje : XPBaseObject
{
public proje () {}
public proje ( Session session) : base (session) {}
public proje ( Session session, string projectName, string owner): base (session)
{
this .projeAdi = padi;
this .projeSahibi = psahibi;
}
private int pId;
private string projeAdi;
private string projeSahibi;
[ Key ( true )]
public int ID
{
get { return pId; }
set
{
if ( value == ID) return ;
pId = value ;
}
}
public string ProjectName
{
get { return projeAdi; }
set
{
string oldValue = padi;
if (oldValue == value )
return ;
projeAdi = value ;
OnChanged( “ProjectName” , oldValue, value );
}
}
public string Owner
{
get { return projeSahibi; }
set
{
string oldValue = psahibi;
if (oldValue == value )
return ;
projeSahibi = value ;
OnChanged( “Owner” , oldValue, value );
}
}
}
Sınıfımızda gördüğümüz [Key(true)] sözcüğüyle OID kullanmayacağımızı söylüyoruz ve veritabanındaki PK yı belirlemek için bu alanın tanımladığımız yerin hemen üstüne yazıyoruz.
Key gibi kullanılan bir diğer yapımız ise [Indexed] bu söcükle veritabanımızda index olarak kullanılan alanları belirtiyoruz.
[ Indexed ( “Ad;Dtarih” , Unique = true )]
public string Soyad = string .Empty;
public string Ad = string .Empty;
public DateTime Dtarih;
Bu kullanımda Indexed sözcüğü hemen Soyad ın üstünde belirtildiği ve Ad-Dtarih ‘te Indexed sözcüğü içnde belirtildiği için bu üç alanın index olarak kullanıldığını anlayabiliriz. Sadece Soyad ın index olmasını isteseydik Ad ve Dtarih alanlarını Indexed sözcüğü içine yazmayacaktık.
Ekleme:
XpoDefault .ConnectionString = “Data Source=******;Initial Catalog=******;UID=mehmet;password=12345” ;
using ( UnitOfWork uow = new UnitOfWork ())
{
insan p = new insan (uow);
p.ProjectName = “Deneme”;
p.Owner = “Metko”;
uow.CommitChanges();
}
Silme:
XpoDefault .ConnectionString = “Data Source=******;Initial Catalog=******;UID=mehmet;password=12345” ;
XPCollection kaynak = new XPCollection ( typeof ( insan ));
using ( UnitOfWork uow = new UnitOfWork ())
{
insan p = kaynak[2] as insan ;
p.Delete();
uow.CommitChanges();
}
Burada gördüğümüz XpCollection yapısı verdiğimiz sınıf isminde yani tablodaki verileri getirip tutuyor. Daha sonra verdimiz index numarasıyla istediğimiz veriyi alabiliyoruz. Burada çektiğimiz verilerdeki 2 index nolu nesne siliniyor.
Güncelleme:
XpoDefault .ConnectionString = “Data Source=******;Initial Catalog=******;UID=mehmet;password=12345” ;
XPCollection kaynak = new XPCollection ( typeof ( insan ));
using ( UnitOfWork uow = new UnitOfWork ())
{
insan p = kaynak[2] as insan ;
p.ProjectName = “Deneme2”;
p.Owner = “ABH”;
uow.CommitChanges();
}
Burada da çektiğimiz verinin alanlarına direk istediğimiz verileri girip CommitChanges metodunu çağırdığımızda verileri güncellemiş oluyoruz.
Verileri getirme:
Verileri XPCollection nesnesinde tuttuğumuz belirtmiştik. XPCollection nesnesinin bir diğer özelliği ise DataSource olarak gösterilebilmesidir. Bu özelliği sayesinde verileri kolayca çekebiliriz.
XpoDefault .ConnectionString = “Data Source=******;Initial Catalog=******;UID=mehmet;password=12345” ;
XPCollection kaynak = new XPCollection ( typeof ( insan ));
gridControl1.DataSource = kaynak;
Arama ve Kümeleme İşlemleri:
XPO ile arama ve kümeleme işlemlerini CriteriaOperator nesnesiyle yapabiliriz. Bu işlemi ya verileri çekerken XPCollection nesnesiyle yada daha sonradan Filter metoduyla yapabiliriz. Birkaç örnek vermek gerekirse:
CriteriaOperatorun özelliği değiştirilerek max,min,sum,avg,count vs işlemleri de yapılbiliyor.
——XPCollection kaynak = new XPCollection(typeof(muhasebe),
——CriteriaOperator.Parse(“HesaplarSınıfı.Sum(HesapAlanı) < 100”));
—- XPCollection kaynak1 = new XPCollection ( typeof ( muhasebe ), CriteriaOperator .Parse( “ID=='” + int .Parse(textBox1.Text)+ “‘” ));
—– XPCollection kaynak = new XPCollection ( typeof ( insan ));
——CriteriaOperator filter = new BinaryOperator ( “Owner” , textBox1.Text, BinaryOperatorType .Equal);
Son makalemizde XPO’da ilişkilerden , transaction ve validation kavramlarından bahsedeceğiz.
Her türlü sorunuzu metkor@gmail.com dan iletebilirsiniz.
Referans: www.devexpress.com/XPO
Leave a Reply