LLBLGEN GİRİŞ – 2

8 – ) LLBLGen Select * From Tablo kullanımı.GetMulti metodu içine farklı değerler alır ama direkt tabloyu getirmek istersek içine null basıyoruz.

KisiCollection kc = new KisiCollection();

kc.GetMulti(null);

dgvData.DataSource = kc;

9-)Inner join kullanımı,RelationCollection oluşturup getmulti metodu içinde belirtiyoruz.Join Hintteki duruma göre left join,right join,cross join vs yapılabilir

KisiCollection kc = new KisiCollection();

IRelationCollection Iliski = new RelationCollection();

Iliski.Add(KisiEntity.Relations.TelefonEntityUsingKisiId,JoinHint.Inner);// Join hint verilmez ise default innerdır

kc.GetMulti(null,0,null,Iliski);

10-)LLBLGen sorgu where kullanımı

KisiCollection kc = new KisiCollection();

IPredicateExpression wherekosul = new PredicateExpression();

wherekosul.Add(KisiFields.KisiId == 1); //Bu en temel manada where KisiID=1 olanı getir demek

wherekosul.AddWithOr(KisiFields.Cinsiyet == true); //AddWithOr ile where KisiID=1 or Cinsiyet=True demek

wherekosul.AddWithAnd(KisiFields.Ad % “%Bilge%”);// % like demek.ayrıca bunuda eklersek where KisiID=1 or Cinsiyet=True and Ad like ‘%Bilge%’

kc.GetMulti(wherekosul);

dgvData.DataSource = kc;

11-)Sort kullanımı

KisiCollection kc = new KisiCollection();

ISortExpression sort = new SortExpression();

//sort.Add(KisiFields.Ad | SortOperator.Descending);Alttakide kodda bu da sortta kullanılır

sort.Add(new SortClause(KisiFields.Ad,SortOperator.Descending));

kc.GetMulti(null, 0, sort);

dgvData.DataSource = kc;

12-)Kişiye ait telefonları getirme(Diğer yöntemde master-detail grid yapısıdır)

KisiCollection kc = new KisiCollection();

IRelationCollection Iliski = new RelationCollection();

Iliski.Add(KisiEntity.Relations.TelefonEntityUsingKisiId, JoinHint.Left);//Join hint verilmez ise default innerdır

ExcludeIncludeFieldsList gridgoster = new ExcludeIncludeFieldsList(true);

gridgoster.Add(KisiFields.KisiId);

gridgoster.Add(TelefonFields.TelefonId);

gridgoster.Add(TelefonFields.KisiId);

kc.GetMulti(null, 0, null, Iliski,null,gridgoster,0,0);

dgvData.DataSource = kc;

Not:Kisi Entitye telefonları çekebilmek için custom Özellik yazdık

Kırmızı commentli alanların içine custom kodu yazmak zorunludur.Aksi takdirde llblgen de değişiklik yapıp source kodu tekrar generate yaptığınızda kodunuzu uçurur.

#region Custom Entity code

// __LLBLGENPRO_USER_CODE_REGION_START CustomEntityCode

public string PhonesAsString

{

get

{

string phones = string.Empty;

foreach (TelefonEntity tel in this.Telefons)

{

phones += tel.Telefon+”,”;

}

return phones;

}

}

// __LLBLGENPRO_USER_CODE_REGION_END

13-)Tekli insert yapmak için entity nesneleri basıp Save demek yeterli

//Tek bir kayıt için Save

KisiEntity ke = new KisiEntity();

ke.Ad = txtAd.Text;

ke.Soyad = txtSoyad.Text;

if (rdbErkek.Checked)

{

ke.Cinsiyet = true;

}

else

{

ke.Cinsiyet=false;

}

ke.Save();

MessageBox.Show(“Kayıt Yapıldı”);

KisiCollection kc = new KisiCollection();

kc.GetMulti(null);

dgvData.DataSource = kc;

14-)Bir nesnenin detayını getirmek istersek,Tek bir entity oluşturup içerisine primary keysini vererek çekebiliriz

KisiEntity ke = new KisiEntity(KisiID);

txtAd.Text = ke.Ad;

txtSoyad.Text = ke.Soyad;

if (ke.Cinsiyet == false)

rdbKiz.Checked = true;

else

rdbErkek.Checked = true;

}

15-)Tek bir nesne update edilecekse sadece entity için değer verilip entity doldurulup save demek yeterli.Save içine true yazılırsa chield nesnelerde otomatikman update olur

int KisiID=Convert.ToInt32(dgvData.CurrentRow.Cells[“KisiID”].Value.ToString());

KisiEntity ke = new KisiEntity(KisiID);

MessageBox.Show(ke.IsDirty.ToString());//Kayıtta değişiklik olup olmadığı flagi false

ke.Ad=txtAd.Text;

ke.Soyad = txtSoyad.Text;

if (ke.Cinsiyet == false)

ke.Cinsiyet=false;

else

ke.Cinsiyet=false;

MessageBox.Show(ke.IsDirty.ToString());//Burada eğer alan değişiklik yapılmış ise true

ke.Save();

MessageBox.Show(“Kayıt Update oldu”);

16-)Tek kayıt için silme entity bulup delete demek yeterli

int KisiID = Convert.ToInt32(dgvData.CurrentRow.Cells[“KisiID”].Value.ToString());

KisiEntity ke = new KisiEntity(KisiID);

ke.Delete();

17-)LLBLGen de batch işlemler yapmak için dataworker nesnesini kullanıyoruz.

Toplu insert,update ve delete için.Bizden transaction ister aşağıda açıklamalar mevcut

UnitOfWork dataworker = new UnitOfWork();

KisiCollection kc = new KisiCollection();

kc.GetMulti(null);

foreach (KisiEntity ke in kc)

{

ke.Soyad = ke.Soyad + “1”;

dataworker.AddForSave(ke);

}

Transaction tr = new Transaction(IsolationLevel.ReadCommitted,”UOW”);//Readcommitted olursa işlem bitene kadar kimse kayıt değişikliği yapamaz

dataworker.Commit(tr,true);//Committe ikinci parametre olarak true verirsek commit işlemi otomatik olarak bitirilir.

//DataWorker committe false verirsek transaction işlemi otomatik olarak commit veya rollback olmaz.Biz elle commit edip,rollback etmeliyiz

//dataworker.Commit(tr, false);

//try

//{

//    tr.Commit();

//}

//catch

//{

//    tr.Rollback();

//}

18-) İlişkili Nesnelerin kullanımına örnek,kişiye ait telefonları yazdırma

KisiCollection kc = new KisiCollection();

kc.GetMulti(null);

foreach (KisiEntity ke in kc)

{

if (ke.Telefons.ToList().Count()>0)

{

foreach (TelefonEntity te in ke.Telefons)

{

listBox1.Items.Add(te.Telefon.ToString());

}

}

}

Bu yazı .NET kategorisine gönderilmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>