none
Entity ile seçili verileri insert etmek mantıksal yardım RRS feed

  • Soru

  • Arkadaşlar merhaba;

    Konuyu olabildiğince kısa tutarak sorumu soracağım biraz karışık bir durum işlem yaptırdım fakat çok uzun sürüyor.Bu da veri sayısı daha fazla olunca timeout problemi doğuracağı için yardımınızı almak istedim.

    Öncelikle verilerim şu şekilde;

    Kişiler tablom var burada kişilerle ilgili birsürü veri var

    Birde Tatil tablom var burada tatil adı tarihi ve birde check alanı var (Ara tabloyla bağlama sebebim aynı tatilin birden çok kişiye eklenmesi 19 mayıs bayramı gibi)

    Ara tablomda ise tatilid ve kisi id alanım var bunları bağlayan.

    Yapmak istediğim güncelleme ise kişi tablosunda örnek olarak ülkesi Türkiye olan kişilere 19 mayıs tarihli tatil eklenecek.Entity framework ile yazdığım kod burada.Kısa tutmak istedim ama umarım anlatabilmişimdir.Aşağıda ki kodda aşırı performans sorunu var bunu hızlandırabilecek fikirlerinizi bekliyorum.

    //Kişi idlerinin tutulacağı liste

    List<int> kisiid = new List<int>();

    //EKlenecek tatilin Holidays tablosundaki id'si

               int holiId = GetHolidayId();

    //Ülkelerin seçildiği checkboxlist

               foreach (ListItem item in chkCountryList.Items)
                {//Eğer bu ülke seçiliyse çalışacak kod
                    if (item.Selected)
                    {
                        int countryid = int.Parse(item.Value);

    //Bu ülke kodundaki kişilerin idsini al

                        kisiid = db.Kisiler.Where(filter => filter.CountryID == countryid).Select(filter => filter.ID).ToList();
                        foreach (var item2 in kisiid)
                        {

    //seçili ülke idsindeki kişilerin herbir idsi için ara tabloya kayıt açıp ekliyor en sondada kaydediyor.

                           SubHoli newholi = new SubHoli
                            {
                                HoliID=holiId,
                                KisiID=item2,
                            };
                            db.SubHolis.Add(newholi);
                        }
                    }
                    //db.SaveChanges();
                }

    Edit: Holidays Tablosu tahmini 200 veriden öte geçmez ama kişiler tablosu 500bin civarı olacak ayrıca subholide 500bin çarpı holidays dersek bayağı veri barındırıcak içinde.Ama tabi tahminin subholis tablosu 2 milyonu geçmez

    • Düzenleyen Mücahit Aktaş 28 Mayıs 2015 Perşembe 19:30 Veritabanı alan sayı bilgisi
    28 Mayıs 2015 Perşembe 19:03

Yanıtlar

  • Task kullanarak sorunu çözdüm sayfa hemen yükleniyor işlem bir şekilde bitiyor :) Tam testleri bitirmedim ama buraya yazayım dedim.Haftaya büyük veri doldurup öyle deneyeceğim.
    29 Mayıs 2015 Cuma 08:56