MVC5 Hatası

Gece baykuşu

Doçent
Katılım
13 Ocak 2019
Mesajlar
500
Reaksiyon puanı
291
Puanları
63
Merhabalar MVC5 ile kütüphane sistemi yapmaya çalışıyorum. Ama bütün Getir kısımlarında bu hatayı alıyorum nasıl çözebilirim.
hata1.JPG
hata2.JPG
hata2.JPG

YazarController Kodları
C#:
    public class YazarController : Controller
    {
        // GET: Yazar
        MvcKutuphaneOdevOtomasyonEntities db = new MvcKutuphaneOdevOtomasyonEntities();
        public ActionResult Index()
        {
            var degerler = db.tblYazar.ToList();
            return View(degerler);
        }
        [HttpGet]
        public ActionResult YazarEkle()
        {
            return View();
        }

        public ActionResult YazarEkle(tblYazar y)
        {
            db.tblYazar.Add(y);
            db.SaveChanges();
           return View();
        }
        public ActionResult YazarSil(int id)
        {
            var yazar = db.tblYazar.Find(id);
            db.tblYazar.Remove(yazar);
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        public ActionResult YazarGetir(int id)
        {
            var yzr = db.tblYazar.Find(id);
            return View("YazarGetir", yzr);
        }
        public ActionResult YazarGuncelle(tblYazar y)
        {
            var yazar = db.tblYazar.Find(y.Id);
            yazar.YazarAd = y.YazarAd;
            yazar.YazarSoyad = y.YazarSoyad;
            yazar.Detay = y.Detay;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
    }
}
 

Gece baykuşu

Doçent
Katılım
13 Ocak 2019
Mesajlar
500
Reaksiyon puanı
291
Puanları
63
Çok uzun bir veri tabanı ismi olmuş.
Ayrıca bir kaç tane modül eksik gibi duruyor. Java dilini biliyorum da biraz. C#'a yakın gibi. Buradan böyle inceliyorum.
Veritabanı ismini düzeltsem sorun düzelir mi peki? Hangi modüller eksik olabilir. Videodaki gibi yaptım. Hocaya bile sordum hata bulamadım dedi.
 

basit

Dekan
Cezalı
Katılım
24 Kasım 2020
Mesajlar
6,302
Çözümler
3
Reaksiyon puanı
6,517
Puanları
293
db.tblYazar.ToList()
Pardon durum anladım. Modül hatası yok, şimdi fark ettim. Büyük ihtimal ile farklı bir veri tipinden kaynaklı null hatası gibi duruyor.
Mesaj otomatik birleştirildi:

1607763883036.png

Böyle bir null hatası gibide olabilir. Bir veri tipine değer yazıyor lakin sonra "null" veriyor.
Umarım anlatabilmişimdir.
 
Son düzenleme:

Gece baykuşu

Doçent
Katılım
13 Ocak 2019
Mesajlar
500
Reaksiyon puanı
291
Puanları
63
Pardon durum anladım. Modül hatası yok, şimdi fark ettim. Büyük ihtimal ile farklı bir veri tipinden kaynaklı null hatası gibi duruyor.
Sorun değil hocam. Peki neden böyle bir hata veriyor anlamadım. İsterseniz VT Sütunlarının resmini atabilirim
 

basit

Dekan
Cezalı
Katılım
24 Kasım 2020
Mesajlar
6,302
Çözümler
3
Reaksiyon puanı
6,517
Puanları
293
Sorun değil hocam. Peki neden böyle bir hata veriyor anlamadım. İsterseniz VT Sütunlarının resmini atabilirim
Atın bakayım hocam. Diziler veri tabanı gibi lakin ilk başta doğru değerleri depo ederken, sonra "null" verdi bende.
 

Gece baykuşu

Doçent
Katılım
13 Ocak 2019
Mesajlar
500
Reaksiyon puanı
291
Puanları
63
Kitap,Kategori,Yazar,Yayınevi Getir yapınca hata veriyor diğer stüunlara veri eklemeye başlamadım. Diyagramı'da ekledim

ceza.JPG
diyagram.JPG
Ekran Alıntısı.JPG
hareket.JPG
kasa.JPG
kategori.JPG
kitap.JPG
personel.JPG
uyeler.JPG
yayinevi.JPG
 

basit

Dekan
Cezalı
Katılım
24 Kasım 2020
Mesajlar
6,302
Çözümler
3
Reaksiyon puanı
6,517
Puanları
293
Hocam yazar, kategori dediğimiz şeyler veri sayı olamaz herhalde. INT sayı türü ve bir aralığı var.
Bu yazar, kategori gibi şeyler daha çok String olmalı.
 

Gece baykuşu

Doçent
Katılım
13 Ocak 2019
Mesajlar
500
Reaksiyon puanı
291
Puanları
63
Hocam yazar, kategori dediğimiz şeyler veri sayı olamaz herhalde. INT sayı türü ve bir aralığı var.
Bu yazar, kategori gibi şeyler daha çok String olmalı.
İlişkilendirme kısmı için yapmıştım ama string yaparsam düzelir değil mi?
 

basit

Dekan
Cezalı
Katılım
24 Kasım 2020
Mesajlar
6,302
Çözümler
3
Reaksiyon puanı
6,517
Puanları
293
İlişkilendirme kısmı için yapmıştım ama string yaparsam düzelir değil mi?
Hocam ilk başta değişkenlere tekrar karar verin.
Örneğin kitap olarak tanımladığını şey bir sayı mıdır, bir isimdir.
Yani eğer bir veri tabanı içinde 5. kitap mıdır, yoksa kitabın direk adı mıdır?
Daha da anlaşılır anlatayım.

Kod:
String[] kitap = ["Hayvan çiftliği", "1984", "Kelile ve Dimne", "Seyahatname"];
gibi bir dizininiz vardır.
Siz eğer bunu veri tabanında kitap[INT] gibi tanımlarsanız, veri tabanınızda, dizi de olan bir veri belirebilir, dizi elemanından büyük sayı girdiğinizde o dizide o kadar eleman olmadığı için "null" hatası verebilir.

Ya da kitap dediğimiz değişken sadece düz String yapıdadır.

Bunları bilmeniz ve buna göre değişkenleri oluşturmanız gereklidir. Umarım anlatabilmişimdir.
 

Gece baykuşu

Doçent
Katılım
13 Ocak 2019
Mesajlar
500
Reaksiyon puanı
291
Puanları
63
Hocam ilk başta değişkenlere tekrar karar verin.
Örneğin kitap olarak tanımladığını şey bir sayı mıdır, bir isimdir.
Yani eğer bir veri tabanı içinde 5. kitap mıdır, yoksa kitabın direk adı mıdır?
Daha da anlaşılır anlatayım.

Kod:
String[] kitap = ["Hayvan çiftliği", "1984", "Kelile ve Dimne", "Seyahatname"];
gibi bir dizininiz vardır.
Siz eğer bunu veri tabanında kitap[INT] gibi tanımlarsanız, veri tabanınızda, dizi de olan bir veri belirebilir, dizi elemanından büyük sayı girdiğinizde o dizide o kadar eleman olmadığı için "null" hatası verebilir.

Ya da kitap dediğimiz değişken sadece düz String yapıdadır.

Bunları bilmeniz ve buna göre değişkenleri oluşturmanız gereklidir. Umarım anlatabilmişimdir.
Konuyu anladım anlatımınız için teşekkürler. Amacım kitabın ekrana sırasıyla gelmesi ekleme güncelleme yapmak idi amacım
 

Samet UCA

Profesör
Katılım
3 Ağustos 2012
Mesajlar
3,288
Reaksiyon puanı
2,930
Puanları
358
Lambda exp kullanmalısınız kodlarınız eksik. Tavsiye olarakta controller kısmında iş yaptırmayın. ID yi argüman olarak basmışsınız ama argüman tablonun kendisine gitmiş.
var yzr = db.tblYazar.Find(id); bu kod doğru görünmüyor.
var yzr = db.tblYazar.Find(x=>x.Id==id); şeklinde yazabilirsiniz.
yada
var yzr = from s in db.tblYazar where s.Id == id select s;
gibi.

veritabanınız hazır ise "c# mvc database first crud migration" şeklinde araştırma yapın ve visual studio nun sizin için bu kodları yazmasını isteyebilirsiniz. Kodları inceleyin olayı anlarsınız.

Tek katmanlı olarak şu kodumu inceleyebilirsiniz.
 
Son düzenleme:
Üst