Sayfa 1 / 1[7Cevap]
dinamik kayıt class'ı
Kullanıcı İçerik

negativeplus

 
dinamik kayıt class'ı
Gönderim Zamanı: 10-07-2013 11:26:13

negativeplus

Üyelik Zamanı: 15-01-2007 12:19:45

Gönderi: 364

Puan: 1937

Merhaba;

Entity ile yeni ilgilenmeye başladım, daha önceden klasik olarak hazırladığım bir veritabanı işlem class'ına ilgili parametreleri(sorgu, değer vs...) gönderip kayıt işlemini tek bir class ile yapıyordum.(herkes gibi:)) ) şimdi entity ile bir proje yapmaktayım ve entity ile böyle bir class'ı nasıl oluşturabileceğim ile ilgili bilgi vermenizi rica ediyorum. Örnek olarak bir şeyler yapmaya çalıştım ancak olmadı. Yaptığım işlem şöyle;

Amacım işlem yapılacak tabloyu ve değerleri dinamik olarak gönderip tek bir class ile kayıt işlemini bitirmek...

 public static string kayitIslemi(string[] degerler, Type tip)

        {

            string sonuc = "";

            int i = 0;

            foreach (var kolon in tip.GetProperties())

            {

                 kolon.Name = degerler[i].ToString();

                  i++;

            }             

            return sonuc;

        }


1#

alirizaadiyahsi_44

 
Ynt:dinamik kayıt class'ı
Gönderim Zamanı: 10-07-2013 13:52:21

alirizaadiyahsi_44

Üyelik Zamanı: 02-08-2012 16:48:20

Gönderi: 424

Puan: 4262

Ne yapmaya çalıştığınız açık değil. Entitiy Framework ile veritabanından oluturdugunuz model içerisindeki sınıflar zaten sizin veritananınızdaki tabloları temsil etmektedir. Örneğin, veritabanı tablonuz;

 

Musteri

id

ad

no

 

gibi ise ve siz bunu entityFrame work ile modele cevirdiginizde, otomatik olarak bu tablo projenizde sınıc olarak gorunecektir. Sizin yapmanız gereken bu sınıfı ilkleyip veritabanına kaydetmek. Örneğin;

 

 

ProjeAdiDbEntities db = new ProjeAdiDbEntities();

Musteri musteri = new Musteri{ ad = "ornek musteri adi", no = "qw431" };

db.Musteri.Add(musteri);
db.SaveChanges();

 

şeklinde yazarsanız, ilkleme yaptıgınız musteri sınıfı veri tabanına eklenecektir.  Tabi bu yazdıklarım sorunuzu dogru anladıysam dogru. Aksi taktirde tam olarak ne yapmak istediginizi yazarsanız yardımcı oluruz...


 

İnsan ne kadar az düşünürse, o kadar çok konuşur.

http://alirizaadiyahsi.blogspot.com.tr/

http://www.gundemdisi.net/

http://www.btsoru.com/

2#

negativeplus

 
Ynt:dinamik kayıt class'ı
Gönderim Zamanı: 10-07-2013 14:38:06

negativeplus

Üyelik Zamanı: 15-01-2007 12:19:45

Gönderi: 364

Puan: 1937

İstediğim şu, sizin örneğinizden gidersek...

 

Bu yaptığınız örnekte db database'inin müşteri tablosuna kayıt ekliyorsunuz, ve her kayıt işleminde 

bunu tekrar tekrar yazmak durumunda kalıyoruz. Bunun yerine ben bir kayıt işlemi class'ı oluşturup

oraya müşteri tablosunun adını ve müşteri tablosuna kayıt edeceğim değerleri parametre olarak gönderip,

kayıt class'ı içinde gelen hangi tablo ise o tablonun kolonlarını döngü ile bulup gelen değer parametreleri ile 

eşleştirerek tek bir class ile işlem yaptırmak istiyorum.


3#

alirizaadiyahsi_44

 
Ynt:dinamik kayıt class'ı
Gönderim Zamanı: 10-07-2013 14:50:00

alirizaadiyahsi_44

Üyelik Zamanı: 02-08-2012 16:48:20

Gönderi: 424

Puan: 4262

Her yere yazmak derken? Tek fonksiyon da yazsanız her yere yazmak zorundasınız. Birden fazla tablonuz var. Tek fonksiyon içerisinde hangi tabloya kayıt yapılacagını bulacaksınız daha sonra o tablonun alanlarını doldurup kayıt yapacaksınız oylemi? Bunun için EntityFramework kullanmanın bir amacı yok. Direk olarak bir fonksiyon içerisinde saf SQL yazarak yapabilirsiniz. Ama EF nin amacı bu değil. 

 

Ben hala nerede sıkıntı yaşadıgınızı anlamış degilim. Kendi fonksiyonunuzun avantajı nedir? Örnek vererek açıklar mısınız?


 

İnsan ne kadar az düşünürse, o kadar çok konuşur.

http://alirizaadiyahsi.blogspot.com.tr/

http://www.gundemdisi.net/

http://www.btsoru.com/

4#

negativeplus

 
Ynt:dinamik kayıt class'ı
Gönderim Zamanı: 10-07-2013 15:16:33

negativeplus

Üyelik Zamanı: 15-01-2007 12:19:45

Gönderi: 364

Puan: 1937

Evet normalde stored procedure ile yapılan işlemlerde vs... sabit bir kayıt class'ı ile işlem yapıyoruz, bunun gibi ben örneğin,

VeritabaniIslemi.KayitIslemi("ornekTablo","ahmetmehmet");

 

gibi... tablomun adını gönderdim, değerimi gönderdim ve fonksiyonum ile bu ornekTablo tablosunun adi kolonuna ahmetmehmet değerini fonksiyon içinde atarak kayıt işlemini kayıt edeceğim. Umarım bu açıklayıcı olmuştur... 


5#

alirizaadiyahsi_44

 
Ynt:dinamik kayıt class'ı
Gönderim Zamanı: 10-07-2013 15:24:51

alirizaadiyahsi_44

Üyelik Zamanı: 02-08-2012 16:48:20

Gönderi: 424

Puan: 4262

Anladım. Bunu EF ile yapmak için iyi bir yazılım tasarımı hazırlamak lazım. Bunda da tablo yerine, o tablonun modelini sınıfa gecirerek belki daha iyi olması saglanabilir. Size il verdigim cevapta yazdıgım kodlar EF nin mantıgını anlatmak içindi. EF kullanırken, yazılımcı biraz daha veritabanından soyutlanır. Bundan dolayı yazılım tarafında iyi bir tasarım yapmak gerekir. Bunun için güncel tasarım desenleri, Dependecy Injection, IOC, Repository Pattern gibi tasarım desenlerini kullanarak, daha esnek ve kullanıslı bir mimari hazırlanabilir.

 

Daha önce saf SQL ile çok çalışmış olanlar EF ye başlarken bu konularda sıkıntı yaşıyor. EF yi kullanım amacına uygun olarak kullanmak lazım. Sizin yaptıgınız örnek ile aynı bir yöntem düşünmek yanlış olur. SQL kullanacaksanız farklı, EF kullanacaksanız farklı tasarım yapmak gerekir.


 

İnsan ne kadar az düşünürse, o kadar çok konuşur.

http://alirizaadiyahsi.blogspot.com.tr/

http://www.gundemdisi.net/

http://www.btsoru.com/

6#

negativeplus

 
Ynt:dinamik kayıt class'ı
Gönderim Zamanı: 10-07-2013 16:50:37

negativeplus

Üyelik Zamanı: 15-01-2007 12:19:45

Gönderi: 364

Puan: 1937

Anladım, ilginize teşekkür ederim. İyi çalışmalar...


7#
Sayfa 1 / 1[7Cevap]

İşaretler & Anlamları
Kilitli Kilitli
Çözüm Kabul Edildi Çözüm Kabul Edildi
Normal Normal