17 Temmuz 2012 Salı

.NET EntityFramework Hatası

EntityFramework ile çalışırken çok gıcık bir hata aldım hata şöyle;
 “An error occurred while starting a transaction on the provider connection. See the inner exception for details”

Bu Hataya sebep olan şey;
foreach (Object item in qry)
{
  item.FirstName = ....
  ... etc, digercodlar.....
  DBEntities.SaveChanges();
}
  
foreach içerisinde  SaveChanges() komutunu kullanmam 
yapam gereken ise sadece SaveChanges() 
komutunu foreach içerisinden çıkartmak.
 
 foreach (Object item in qry)

{
  item.FirstName = .... 

  ... etc, diger kodlar....
} 
  DBEntities.SaveChanges();

Entitiy Framework İlişkili Tablolarda Select Kullanımı İle İlgili Bir İp Ucu

Entitiy Framework ile ilişkili tablolarda çalışırken ilişki içinde olan tablolardan birine sorgu çektiğinizde ilişkisi olan diğer tablo hakkında bilgi alamamaktayız, bu nedenle ilk ilişkili tablomuzu ilişkisi olan diğer tablomuzla doldurmamız gerekli.

musteri_iletisim tablosu musteri ve iletisim tablosuyla ilişkili

            SinerjiCRMEntities entiti = new SinerjiCRMEntities();
            //var sorgu = from d in entiti.musteri_iletisim where d.musteriler.id == musteriid select d;
            var sorgu = (from d in entiti.musteri_iletisim.Include("iletisim") where d.musteriler.id == musteriid select d);
            foreach (var item in sorgu)
            {
                iletisim tek_iletisim = (from d in entiti.iletisim where d.id == item.iletisim.id select d).First();
                lstIletisim_listesi.Items.Add(new kod.listbox_nesne(tek_iletisim.adi, tek_iletisim.id));
            }


kırmızı renkle işaretlemiş olduğum nesnemin null gelmemesi için mor olan kodu yazıp musteri_iletisim nesnemi ,iletisim nesnesiyle doldurmam gerekli aksi halde item.iletisim.id alanı null gelip sorgum iç bir işe yaramayacaktır.



Not:Bu ipucu bir yazılımcı arkadaşa faydalı olduysa yorum yazarsa çok sevinirim. :) Yorum yazılmayınca kendi kendime konuşuyor gibi oluyorum :)

Devexpress ListBoxControl Listitem

devexpress listboxcontrol kullanırken
listboxcontrol.Items.Add();
metodunu kullanırsanız Add metodunun bir Object türünden nesne istediğini görebilirsiniz.Bu özellik bize bir çok tip ve karakterde değişik Listitemler oluşturmamızı sağlar benim geliştirdiğim ve projelerimde kullandığım listitem şöyle ;
    public class listbox_nesne
    {
        public string Data;
        public int Id;
        public listbox_nesne() : this("", 0) { }
        public listbox_nesne(string data,int id )
        {
            Id = id;
            Data = data;
        }
        public override string ToString()
        {
            return Data;
        }
    }

Kullanımı ve nesnenin içindeki bilgilerin alınması ise şöyle gerçekleşmekte.
listBoxControl1.Items.Add(new listbox_nesne("data", 3));
listBoxControl1.SelectedIndex = 0;
object data = ((listbox_nesne)listBoxControl1.SelectedItem).Data;

12 Temmuz 2012 Perşembe

Entity Framework İlişkili tablolarda Insert İşlemi

Bir çok projemde Entity Framework kullandım.Fakat hep o ilişki sorgularda Entity framework e bir türlü aşina olamıyordum.Bu nedenle yeni geliştirdiğim bir projede entity framework zorlamaya karar verdim.Keşfettim ilk önemli bilgiyi sizinle paylaşak istedim.
Senaryom şöyle ;
 iki tablo birbiriyle ilişkili ve ben işlemler tabloma yeni kayıt girmek için şu kodu kullandım.

            CRMEntities entiti = new CRMEntities();
            islemler islemler_ = new islemler();
            islemler_.islem = strislem;
            islemler_.tarih_saat = DateTime.Now;
            if (genelkullanici.adi != null)
            {
                //newListing.Tbl_Category = DBEntities.Categories.Single(c => c.ID == 2);
                islemler_.kullanici = entiti.kullanici.First(c => c.id == genelkullanici.id);
            }

            else
                islemler_.kullanici = null;
            entiti.AddToislemler(islemler_);
            int saveChanges = entiti.SaveChanges();

Normalde işlemler tabloma yeni kayıt girmek için islemler.kullaniciid = genelkullanici.id girmem gerek fakat entityframework ilişkili tablolarda nesne girmemizi istiyor bu sebeble.
islemler_.kullanici = entiti.kullanici.First(c => c.id == genelkullanici.id);
 bu kod derdime derman oldu.