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());
}
}
}