none
Veritabanında "bu kayıt var mı yoksa ekle" kod tekrarından kurtulmak? RRS feed

  • Soru

  • Telefon satış ile ilgili bi proje yapıyorum, en başta telefon girişleri yapılmadan önce ben elimde bütün işlemci, ekran boyutu, bellekleri gireyim ondan sonra dropdownlistten seçilerek ürünler eklensin istiyorum öncellikle bu doğru yöntem midir? Yoksa sağdaki 4lü tabloya hiç gerek yok mudur?
    Eğer bu şekilde mantıklıysa asıl sorum şu; Operator bi islemci girecek ama belki o islemci daha önceden eklenmiştir bunu eklemeden önce kontrolunu sağlıyorum ama her bir nesne için aynı kodları yazmak doğru mudur yoksa bi methodla vs. bunu daha kısa ve doğru bi şekilde halledebilir miyim. 
    Şimdiden çok teşekkürler

                yaziciEntities db = new yaziciEntities();
                var marka = new Marka();
                marka.MarkaAdi = markaBox.Text;
    
                var sorgula = db.Markas.Where(p => p.MarkaAdi == markaBox.Text.ToString());
                if (sorgula.Count() > 0)
                {
                    MessageBox.Show(markaBox.Text + " isimli marka daha önceden eklenmiş.");
                }
                else
                {
                    db.Markas.Add(marka);
                    db.SaveChanges();
                    this.markaTableAdapter.Fill(this.yaziciDataSet2.Marka);
                }
    bi önceki projemde bu şekilde sorgulayıp kayıt yoksa ekleme işlemi yapıyorum bu şekilde mi devam etmeliyim?
    • Düzenleyen reoi 28 Temmuz 2019 Pazar 09:25 Ekleme
    28 Temmuz 2019 Pazar 09:22

Tüm Yanıtlar

  • Veritabanı olarak ne kullanıyorsun bilmiyorum ama bütün veritabanlarında tabloya unique index olarak marka adını seçersen kayıt var mı yok mu olayını sorgulamana gerek kalmaz eğer kayıt var ise tablodan hata mesajı döner senin dönen kodu sorgulaman yeterli böylece iki kere vt. gitmek zorunda kalmazsın.

    http://www.sqlkodlari.com/30-sql-unique-kullanimi.asp

    Kolay gelsin.

    28 Temmuz 2019 Pazar 11:41
  • Öneri olarak Entity Framework - Generic Repository ve Unit of Work Uyarlaması linkini inceleyebilirsiniz.

    Altan Özdemir

    28 Temmuz 2019 Pazar 12:35
  •             yaziciEntities db = new yaziciEntities();
                var marka = new Marka();
                marka.MarkaAdi = markaBox.Text;
    
                var isExist= db.Markas.Any(p => p.MarkaAdi == 
                             markaBox.Text);
    
                if (isExist)
                {
                    MessageBox.Show(markaBox.Text + " isimli marka daha önceden eklenmiş.");
                }
                else
                {
                    db.Markas.Add(marka);
                    db.SaveChanges();
                    this.markaTableAdapter.Fill(this.yaziciDataSet2.Marka);
                }
    çok ufak bir dokunuş yapmak istedim. 
    O alanı  unique  yap diyebilirim. Aynı kayıdı eklemek istediğin zaman hata alırsın. Şuan aklıma gelen çözüm bu.

    Agha Huseynov

    28 Temmuz 2019 Pazar 13:50
  • Ya bir sorulama class yada fonksiyon yazarsan kolay olur.

    int sonuc=Sorgula(markas,markaBox.text);

    if (sonuc>0) // daha önce  kayıt

    yoksa

    ya 

       db.Markas.Add(marka);
                    db.SaveChanges();
                    this.markaTableAdapter.Fill(this.yaziciDataSet2.Marka);

    yazınız. yada ekle diye bir class yazıp

    sadece Ekle(marka); şeklinde olursa daha iyi olur. aynı zamanda Ekle ye diğer sorgulanacak alanlarıda  yapabilirsiniz.



    mehmet bastem

    28 Temmuz 2019 Pazar 17:57