Hocalar merhaba C#'ta listview'e veri basarken kullanacağım ideal yntemi işi bilen insanlara sormak istedim. Siparis adında bir sınıfım var ve içeriği şu şekilde: public class Siparis { public int siparisID public string siparisNo public int tedarikciID public DateTime siparisVerilmeTarihi public DateTime siparisTeslimTarihi public bool siparisDurumu public string siparisAciklama public string siparisIcerik } Ana formun yapılandırıcı metodunun içeriği de şu şekilde: public SiparisTakip { InitializeComponent ; Database. dbConnect ; // Veritabanından siparişleri çeken komutum ve altında o verileri listeleyen komutum. MySqlCommand komut = new MySqlCommand ; MySqlDataReader listele = komut. ExecuteReader ; // Dngüye sokup sipariş kayıtlarını alıyorum. while (listele. Read } Sormak istediğim soru şu: Her yeni kayıt için dngü içerisinde yeni bi obje oluşturmak programa ek yük olarak dner mi? Bu kullanıma gerek var mıdır?Sadece veriyi çekip dngü içinde ListViewItem ile Siparis sınıfını kullanmadan ListView içine atmak bana ne kaybettirir? Üstteki kullanımın bana sağladığı en nemli şey OOP mantığına uyması mıdır?

Sipariş diye bir arraysınıfı yaparsın ve static olarak tanımlarsın X, Y, Z Ekranlarında seçilen siparişin Unique id gre bir ararsın array sınıfı içerisinde. Aranan objeyi bulursun birdaha bahsettiğim X, Y, Z ekranlarında bu objenin verilerini kullanırsın. Bu programa hız katar ama bellekden refakat edersin. Yani şyle ki. Bahsettiğim ekranlarda Tıklanılan sipariş unique id çekip bunu tekrar sorgulayıp veritabanından dataları çekmek ekstra zaman demektir. Başka aklıma birşey gelmedi. Birde elindeki dataları ne kadar nesneye dkersen ynetimi o kadar kolaylaşır. Yani yarın bürgün X Bir kişisine sen şu ekranı yap sana bu şekilde bir Sınıf gndereceği parametreler şunlar değişkenler şunlar dediğinde kişi veritabanından bağımsız senin vermiş olduğun sınıfa gre sana bir method veya ekran artık her ne ise yazar.. Obje yaparsan UML/USE-CASE diyagramlarının ynetimini daha basit hale getirirsin zaten sınıfla yapmazsan biraz karmaşık olacaktır . OOP iyidir iyi olmasa Entitiy framework olmazdı hacı abi :D :D EDİT ; @unbalanced benden nce davranmış zaten dediklerimi okumayıp es geçebilirsin :D EDİT 2: Aman ha tüm databaseyi bi oje içerisine atıp da ordan arama yapma dediklerimden byle birşey çıkarma lütfen. Bazı programlarda bu yapılıyor. Adam tüm tabloyu bi sınıf içerisine alıyor. Sen gerekli olan datayı çek en az düzeyde sakla. Tüm datayı çekme. asla... MhmdAlmz tarafından 26/Tem/17 00:43 tarihinde düzenlenmiştir Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

Hocam bende nacizane fikrimi soyliyim sana 1 ) Entity framework kullan. 2) Bir mimari kullan - Senin durumunda 3 layer architecture isni gorebilir 3) Data binding kullan 4) Generic Types kullan Su konuya bir goz at @unbalanced cok iyi anlatmisti https://www.tahribat.com/forum/c-entityframework6-datagridviewcomboboxcolumn-ile-229756 Ozgurluk aslinda her istedigini yapabilmek degildir, istemedigini yapmamaktir. // Verdigin degeri gormeyince, gordugun degeri ver!!! // Hayatin herkes icin bir bavulu vardir!!! // Dusmek gerekir bazen hayatta; kalkmayi ogrenebilmek icin

merhaba, 1-Her yeni kayıt için dngü içerisinde yeni bi obje oluşturmak programa ek yük olarak dner mi? # Bilgisayarlarin bellekleri artik 128 mb degil hocam, sikinti yaratmaz. Ancak sorgundan milyonlarca kayit dnüyorsa byle yapmak bastan beri mantiksizlik olur. Paging yapmani neririm 2- Bu kullanıma gerek var mıdır? # Bir datatable i datasource olarak kullanabilirsin. Ya da surrogate class yazarak istenilen propertyleri alabilirsin ve varsa eklemeler yapabilirsin 3- Sadece veriyi çekip dngü içinde ListViewItem ile Siparis sınıfını kullanmadan ListView içine atmak bana ne kaybettirir? # Kodunda siparis sinifi gereksiz durmus zaten hocam. Onun yerine direk text olarak ekleyebilirdin. 4- Üstteki kullanımın bana sağladığı en nemli şey OOP mantığına uyması mıdır? # OOP mantigini zaten hic kuramamissin. Sana tavsiyem her metodun yapmasi gereken bir is oldugunu düsün. Ancak bu constructor birden fazla is yapiyor ve grdügüm kadariyla bir winform un kurucu methodu. N-tier sekilde calismaya bak. Projenin büyüklügünü bilmiyorum ancak db deki verileri handle etmek icin icin Data Access Layer , bu verileri cagirip, düzenleyen ve GUI ye gnderen yani bir kprü vazifesi gren Business Logic Layer ve de view lerini barindirdigin GUI projesini ayirabilirsin. Aslinda daha farkli seyler de yapabilirsin ama basitce bu mantik üzerinden baslamani tavsiye ederim. Bylece verileri cekme olayini DAL'a, bu verileri isteyip-isleyecen-gnderen isini BLL ye, kullaniciya gsterme isini de GUI e verebilirsin. Burada dikkat etmen gereken GUI nin hic bir sekilde DAL ile isinin olmamasi. Kapsamina gre bir de Model projesi olusturabilirsin ya da Entity Framework kullaniyorsan DB first ile otomatik olarak classlarini yaratabilirsin. unbalanced tarafından 26/Tem/17 00:40 tarihinde düzenlenmiştir Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.

hocalar cevaplarınız için çok teşekkür ederim. yazdığım kodun amatrce olduğunun farkındaydım. verdiğiniz cevaplar zaten düşünmem gereken şeylerin adlandırılmış bi biçimde somut dışavurumu gibi olmuş. ufkumu biraz daha açtığınız, kendimi geliştirmem gereken doğrultuyu gsterdiğiniz için tekrar teşekkürler.