none
MVC programlama Hakkında Yardım talebi... RRS feed

  • Soru

  • Merhaba,
    MVC üzerine programlamaya yeni başladım. 
    Öğrenme aşamasında yapmaya çalıştığım bir proje var. Bu konuda bana yardımcı olabilirseniz sevinirim. 
    ilk sorum şu: bir ödev takip çizelgesinde bazı bilgileri takip etmek istiyorum. 
    Yukarıda kaynak isimleri soldan sağa doğru sıralı, alt tarafta yukarıdan aşağı doğru sıralı konular olduğunu düşünün.. Yani 1.kaynak için konu1 kısmına soru sayısını girmek ve bunu veri tabanına aktarmak istiyorum. kaynak sayısı fazla iken konulara ait soru sayılarını takip edebileceğim bir veritabanını nasıl tasarlamalı ve uygulamayı nasıl yazmalıyım. Giriş aşaması için bu bilgi benim için çok önemli. Bana bu konuda en kısa zamanda yardımcı olabilirseniz sevinirim.
    Teşekkürler.
    27 Haziran 2016 Pazartesi 10:01

Yanıtlar

  • Israrla database'inin ne oldugunu soylemiyorsun, ve database'i isin onemsiz bir parcasi gibi goruyorsun :(

    Sen elinde bir matrix tutuyorsun ama hic ornek matrix vermiyorsun :( Yine ornek yazmasi bize dusuyor, MS SQL server gibi, klasik SQL serisi bir database icin:

    void Main()
    {
    	List<Konu> konular = new List<Konu> {
    		new Konu {
    			Ad="Konu1",
    			Kaynaklar=new List<Kaynak> {
    				new Kaynak { Ad="Kaynak1", Sayi= 100},
    				new Kaynak { Ad="Kaynak2", Sayi= 50},
    				new Kaynak { Ad="Kaynak3", Sayi= 60},
    			}
    		},
    		new Konu {
    			Ad="Konu2",
    			Kaynaklar=new List<Kaynak> {
    				new Kaynak { Ad="Kaynak1", Sayi= 20},
    				new Kaynak { Ad="Kaynak2", Sayi= 30},
    				new Kaynak { Ad="Kaynak3", Sayi= 40},
    			}
    		},
    		new Konu {
    			Ad="Konu3",
    			Kaynaklar=new List<Kaynak> {
    				new Kaynak { Ad="Kaynak1", Sayi= 15},
    				new Kaynak { Ad="Kaynak2", Sayi= 20},
    				new Kaynak { Ad="Kaynak3", Sayi= 30},
    			}
    		},
    	};
    
    	using ( var con = new SqlConnection( @"server=.\SQLExpress;Database=KonuDb;Trusted_Connection=yes" ) )
    	{
    	   var cmd = new SqlCommand(@"insert into Konular 
    	   	(Konu, Kaynak, Sayi) 
    		values 
    		(@konu, @kaynak, @sayi)", con);
    		
    		cmd.Parameters.AddWithValue("@konu", "");
    		cmd.Parameters.AddWithValue("@kaynak", "");
    		cmd.Parameters.AddWithValue("@sayi", 0);
    		con.Open();
    		foreach (var konu in konular)
    		{
    			cmd.Parameters["@konu"].Value = konu.Ad;
    			foreach (var kaynak in konu.Kaynaklar)
    			{
    				cmd.Parameters["@kaynak"].Value = kaynak.Ad;
    				cmd.Parameters["@sayi"].Value = kaynak.Sayi;
    				cmd.ExecuteNonQuery();
    			}
    		}
    		con.Close();
    	}
    }
    
    
    public class Kaynak
    {
    	public string Ad { get; set; }
    	public int Sayi { get; set; }
    }
    
    public class Konu
    {
    	public string Ad { get; set; }
    	public List<Kaynak> Kaynaklar { get; set; }
    }

    27 Haziran 2016 Pazartesi 12:04

Tüm Yanıtlar

  • Iyi de bu soru MVC ile ilgili degil, database ile ilgili ve kullanilan database'e gore farklilik gosterir. Bazi databaseler ile daha basittir bazilari ile daha zor. Klasik bir SQL serisi database ile:

    Konu, Kaynak, Sayi

    seklinde tasarlarsin. Bu sekilde konu ve kaynak sayisinda sinirlama olmaz. Konu*Kaynak sayisinin birkac yuzbini gecmeyecegini dusunursen, performans sorunu yaratmayan bir bir tasarim olur.

    Kullandigin database'e gore de bunu soyledigin sekle ceviren tablefunc, pivot ... gibi de komutlar var (crosstab islemi). 

    27 Haziran 2016 Pazartesi 10:31
  • aslında database bunun alt bacağı. benim sormak istediğim daha çok asp.net te mvc olarak nasıl yazılabilir ve veriler veritabanına nasıl aktarılabilir?

    Yanlış ifade için özür dilerim.

    27 Haziran 2016 Pazartesi 10:40
  • Yapmak istediğin tasarımın .HTML yaptın mı ? arayüz yaparken projenin belli yerleri kafanda daha net oturmaya başlıyor.

    sonra Veritabanı oluşturup yapmış olduğun html ve veritabanı MVC de birleştirirsin. Veri tabanını oluştururken yapmış olduğun arayüz içerisinde kullandığın örnek veriler sana alanları oluşturmak için yol gösterecektir.


    • Düzenleyen A_BLR 27 Haziran 2016 Pazartesi 10:52
    27 Haziran 2016 Pazartesi 10:51
  • buradaki sıkıntı şu: matris bir şekilde verileri girmem gerekiyor. bunuda veritabanına doğru bir şekilde aktarabilmem gerekiyor. Mümkünse 1-2 verinin girildiği bir örnek hazırlayhabilirseniz diğerlerini bu mantıkla oluşturmaya devam edebilirim.

    Şimdiden Teşekkürler.

    27 Haziran 2016 Pazartesi 10:56
  • Örnek verirmisin ? senorya yazarsan veri tabanını çıkartmaya yardımcı olalım


    • Düzenleyen A_BLR 27 Haziran 2016 Pazartesi 11:07
    27 Haziran 2016 Pazartesi 11:06
  • Tabiiki. Teşekkür ederim.

    Kaynak kitaplar girilecek. Örneğin matematik branşından farklı kitaplar. Konuları aynı. 

    Bunlar başlık olarak soldan sağa sıralanmış olacak.

    Sol tarafta da bu kitapların içeriği olan konular yukarıdan aşağı sıralanacak. 

    Kaynak1 Kaynak2 Kaynak3 ...

    Konu1   100     50     60

    Konu2          20             30            40

    Konu3     15      20     30

    ... ...

    gibi.

    buradan girilen verilerin hem veritabanına doğru bir şekilde aktarılması, hemde doğru bir şekilde geri çağrılması gerekiyor.

    Umarım anlatabilmişimdir.

    27 Haziran 2016 Pazartesi 11:12
  • Database bunun alt bacagi da ne demek? Database'e nasil girilecegini kullandigin database belirler. Bazi databaselerde yukarida anlattigim gibi klasik bir yapi vardir. O zaman senin sayfandaki matrixden alip basitce her satir icin'deki her kolon icin bir kayit insert (ya da update) edersin.

    Oysa kullandigin database daha yetenekli databaselerden birisi ise, matrixini dogrudan insert ediyor da olabilirsin. 

    27 Haziran 2016 Pazartesi 11:27
  • "senin sayfandaki matrixden alip basitce her satir icin'deki her kolon icin bir kayit insert (ya da update) edersin."

    Klasik bir veritabanı yapısı için yukarıdaki cümleyi açabilirmisiniz? 

    Kolon diyebilmemiz için kaynak isimlerinin alan olarak tanımlanması gerekmez mi o zaman? 

    Mümkünse ufak bir örnek verip bir yol gösterebilirseniz çok iyi olur.

    27 Haziran 2016 Pazartesi 11:36
  • Israrla database'inin ne oldugunu soylemiyorsun, ve database'i isin onemsiz bir parcasi gibi goruyorsun :(

    Sen elinde bir matrix tutuyorsun ama hic ornek matrix vermiyorsun :( Yine ornek yazmasi bize dusuyor, MS SQL server gibi, klasik SQL serisi bir database icin:

    void Main()
    {
    	List<Konu> konular = new List<Konu> {
    		new Konu {
    			Ad="Konu1",
    			Kaynaklar=new List<Kaynak> {
    				new Kaynak { Ad="Kaynak1", Sayi= 100},
    				new Kaynak { Ad="Kaynak2", Sayi= 50},
    				new Kaynak { Ad="Kaynak3", Sayi= 60},
    			}
    		},
    		new Konu {
    			Ad="Konu2",
    			Kaynaklar=new List<Kaynak> {
    				new Kaynak { Ad="Kaynak1", Sayi= 20},
    				new Kaynak { Ad="Kaynak2", Sayi= 30},
    				new Kaynak { Ad="Kaynak3", Sayi= 40},
    			}
    		},
    		new Konu {
    			Ad="Konu3",
    			Kaynaklar=new List<Kaynak> {
    				new Kaynak { Ad="Kaynak1", Sayi= 15},
    				new Kaynak { Ad="Kaynak2", Sayi= 20},
    				new Kaynak { Ad="Kaynak3", Sayi= 30},
    			}
    		},
    	};
    
    	using ( var con = new SqlConnection( @"server=.\SQLExpress;Database=KonuDb;Trusted_Connection=yes" ) )
    	{
    	   var cmd = new SqlCommand(@"insert into Konular 
    	   	(Konu, Kaynak, Sayi) 
    		values 
    		(@konu, @kaynak, @sayi)", con);
    		
    		cmd.Parameters.AddWithValue("@konu", "");
    		cmd.Parameters.AddWithValue("@kaynak", "");
    		cmd.Parameters.AddWithValue("@sayi", 0);
    		con.Open();
    		foreach (var konu in konular)
    		{
    			cmd.Parameters["@konu"].Value = konu.Ad;
    			foreach (var kaynak in konu.Kaynaklar)
    			{
    				cmd.Parameters["@kaynak"].Value = kaynak.Ad;
    				cmd.Parameters["@sayi"].Value = kaynak.Sayi;
    				cmd.ExecuteNonQuery();
    			}
    		}
    		con.Close();
    	}
    }
    
    
    public class Kaynak
    {
    	public string Ad { get; set; }
    	public int Sayi { get; set; }
    }
    
    public class Konu
    {
    	public string Ad { get; set; }
    	public List<Kaynak> Kaynaklar { get; set; }
    }

    27 Haziran 2016 Pazartesi 12:04
  • İlginiz ve alakanız için çok teşekkür ederim. 

    Takıldığım yerlerde size tekrar danışmak isterim.

    İyi çalışmalar...

    27 Haziran 2016 Pazartesi 12:30