none
ilk defa böyle bir asp.net hatasıyla karşılaştım RRS feed

  • Genel Tartışma

  • An exception of type 'System.ArgumentException' occurred in Veritabani_islemleri.dll but was not handled in user code

    Additional information: System.Collections.Generic.HashSet`1[[Tablolar.Kampanyali_urunler, Tablolar, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] nesne türüyle, bilinen bir yönetilen sağlayıcı yerel türü arasında eşleme yok.

    veritabanına veri ekleme işlemi yaparken bu hatayla karşılaştım 

    bu hata nedir ve nasıl düzeltcem

    yardımlarınız için şimdiden teşekürler

    26 Nisan 2016 Salı 21:05

Tüm Yanıtlar

  • veritabani_islemleri.dll i yanlış yapmışsınız. Anca bu kadar söylenebilir.

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    26 Nisan 2016 Salı 21:31
    Moderatör
  • Bir yerlerde bir hashset varmış sanki ona tipinden gayri başka bir tip ile iş yaptırıyormuşsun gibi... İlgili bölümdeki kodu paylaşabilirsen daha yardımcı oluruz.
    27 Nisan 2016 Çarşamba 06:28
    Moderatör
  • public int ekle_guncelle_sil(string sqlstr,CommandType type,List<SqlParameter> prm)
            {
                try
                {
                    SqlCommand komut = new SqlCommand(sqlstr, baglanti.con());
                    komut.CommandType = type;
                    komut.Parameters.AddRange(prm.ToArray());
                    return ExecuteNonQuery.Exe(komut);
                }
                catch (Exception)
                {

                    throw;
                }
            }

    burda hata veriyor.

    bu metodu bir cok tablo kulanıyor ve sıkıntısız calıştı 

                    
    27 Nisan 2016 Çarşamba 10:30
  • sıkıntısız ise neden konu açtınız ki?

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    27 Nisan 2016 Çarşamba 11:05
    Moderatör
  • yaptığım site e-ticaret

    yöneici kapanya detaylarını giriyor ve kaydete bastığında bu hatayı verdi 

    site katmanlı mimari ile yapıyorum ve yukarda ki metotla birçok sayfada kulandım ve sorunsuz calıştı ama işte bu kampanya detay sayfasında olmadı ve aşagıdaki hatayı verdi hata nedir bana ne demek istiyor kodlarımı kontrol ettim 

    An exception of type 'System.ArgumentException' occurred in Veritabani_islemleri.dll but was not handled in user code

    Additional information: System.Collections.Generic.HashSet`1[[Tablolar.Kampanyali_urunler, Tablolar, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] nesne türüyle, bilinen bir yönetilen sağlayıcı yerel türü arasında eşleme yok.

    27 Nisan 2016 Çarşamba 11:32
  • Bu yaptığınız katmanlı mimari falan değil, "sorunsuz çalıştı" derken umut ettiğiniz şeyi gerçek gibi algılıyorsunuz.

    Neyse,

    bi yerde bir parametre ile bu methodunuzu çağırıyorsunuz, ama parametre nin tipi database deki tip ile uymuyor ya da null parametre listesi yolluyorsunuz, ya da yolladığınız listenin tipi uymuyor. Sonuç olarak hatayı burada değil bu methodu çağırdığınız yerlerde arayın.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com


    27 Nisan 2016 Çarşamba 11:39
    Moderatör
  • hocam bir cok yerde baktım belki tam anlamamışım eğer sizin tavsiye bir site varsa link atabilirmisinzi daha yeni başladım bu işlere 

    sql serverda procedure kulanıyorum orda null degerleri default olarak farklı bir değer atıyor, program icindede veritabanı tablolarını bi sınıf olusturdum tum tamlolar onun içinde ve osınıfı cağırarak parametre bilgilerini onun içine atıyorum ve kendi gelen değer varsa parametre olarak ekliyor yoksa o parametreyi göndermiyor 

    bu metotla gonderilen değerlere göre kedi parametre olusturuyor.

    public static List<SqlParameter> parametreler(Kampanyalar item)
            {
                if (item != null)
                {
                    List<SqlParameter> prm = new List<SqlParameter>();
                    if (item.id != 0)
                        prm.Add(new SqlParameter("@id", item.id));

                    if (item.baslangic_tarihi != null)
                        prm.Add(new SqlParameter("@baslangic_tarihi", item.baslangic_tarihi));

                    if (item.bitis_tarihi != null)
                        prm.Add(new SqlParameter("@bitis_tarihi", item.bitis_tarihi));

                    if (item.kampanya_kural_degeri != null)
                        prm.Add(new SqlParameter("@kampanya_kural_degeri", item.kampanya_kural_degeri));

                    if (item.kampanya_kurali != null)
                        prm.Add(new SqlParameter("@kampanya_kurali", item.kampanya_kurali));

                    if (item.kampanya_turID != null)
                        prm.Add(new SqlParameter("@kampanya_turID", item.kampanya_turID));

                    if (item.Kampanya_turleri != null)
                        prm.Add(new SqlParameter("@Kampanya_turleri", item.Kampanya_turleri));

                    if (item.kampanyalar_id != null)
                        prm.Add(new SqlParameter("@kampanyalar_id", item.kampanyalar_id));

                    if (item.Kampanyali_urunler != null)
                        prm.Add(new SqlParameter("@Kampanyali_urunler", item.Kampanyali_urunler));

                    if (item.yapilacak_indirim_orani != null)
                        prm.Add(new SqlParameter("@yapilacak_indirim_orani", item.yapilacak_indirim_orani));

                    return prm;
                }
                else
                    return null;
            }

    bu metot son kontroleri yaptıktan sonra veritabanı_islemlerine gönderiyor ve orasıda sql servera

    public int insert_into(Kampanyalar item)
            {
                using (ekle veriekle = new ekle())
                {
                    List<SqlParameter> prm = parametreler(item);
                    if (prm != null)
                        return veriekle.ekle_guncelle_sil("kampanyalar_ekle", CommandType.StoredProcedure, prm);
                    else
                        return -1;
                }
            }

    buda sayfa içinde calıştırılan kodlar

    using (KampanyalarVI ekle = new KampanyalarVI())
                    {
                        Kampanyalar item = new Kampanyalar();
                        item.yapilacak_indirim_orani = Convert.ToInt32(txt_indirimorani.Text);
                        item.yapilacak_indirim_oran_tipi = ddl_kampanyaorantipi.SelectedItem.Text;
                        item.kampanya_turID = Convert.ToInt32(ddl_kampanya.SelectedItem.Value);
                        item.kampanya_kurali = txt_kural.Text;
                        item.kampanya_kural_degeri = txt_kuraldegeri.Text;
                        item.bitis_tarihi = Convert.ToDateTime(txt_bitis.Text);
                        item.baslangic_tarihi = Convert.ToDateTime(txt_baslamatarihi.Text);

                        int a = ekle.insert_into(item);
                        if (a > 0)
                            Response.Write("kampanya_detay.aspx");
                        else
                            hata_mesajlari.hata_kulanici_bilgilendirme(a);
                    }

    buda sql serverdaki kodlar

    ALTER procedure [dbo].[urun_detay_guncelle]
    @id int=0,
    @urunID int=0,
    @aciklama nvarchar(100)=' ',
    @materyalbilgileri nvarchar(500)=' ',
    @modelbilgileri nvarchar(500)=' ',
    @kodu nvarchar(30)=' ',
    @fiyat int=0,
    @parabirimi nvarchar(10)=' ',
    @renk nvarchar(30)=' ',
    @beden nvarchar(10)=' ',
    @teslimat_iade nvarchar(300)=' ',
    @indirim_kuponuID int=0,
    @miktar int=0,
    @ekleme_tarihi datetime=01010001
    as
    if @id>0 and @urunID>0 and @aciklama!=' ' and @materyalbilgileri!=' ' and @modelbilgileri!=' ' and @kodu!=' ' and @fiyat>0 and @parabirimi!=' ' and @renk!=' ' and @beden!=' ' 
    begin
    update Urun_detay set urunID=@urunID,aciklama=@aciklama,materyalbilgileri=@materyalbilgileri,modelbilgileri=@modelbilgileri,kodu=@kodu,
    fiyat=@fiyat,parabirimi=@parabirimi,renk=@renk,beden=@beden,teslimat_iade=@teslimat_iade,indirim_kuponuID=@indirim_kuponuID,miktar=@miktar,ekleme_tarihi=@ekleme_tarihi
    where id=@id;
    select @id
    END
    else if @id>0 and @indirim_kuponuID>0 and @urunID=0 and @aciklama=' ' and @materyalbilgileri=' ' and @modelbilgileri=' ' and @kodu=' ' and @parabirimi=' ' and @renk=' ' and @beden=' ' 
    begin
    update Urun_detay set indirim_kuponuID=@indirim_kuponuID where id=@id;
    select @id;
    end
    else if @id=0 and @indirim_kuponuID>0 and @urunID>0 and @aciklama=' ' and @materyalbilgileri=' ' and @modelbilgileri=' ' and @kodu=' ' and @parabirimi=' ' and @renk=' ' and @beden=' ' 
    begin
    update Urun_detay set indirim_kuponuID=@indirim_kuponuID where urunID=@urunID;
    select @urunID;
    end

    27 Nisan 2016 Çarşamba 12:11
  • sql deki ekleme yerine guncellemeyi atmışım 

    ALTER proc [dbo].[kampanyalar_ekle]
    @kampanyalar_id nvarchar(100)=' ',
    @kampanya_turID int=0,
    @kampanya_kurali nvarchar(200)=' ',
    @kampanya_kural_degeri nvarchar(100)=' ',
    @yapilacak_indirim_oran_tipi nvarchar(30)=' ',
    @yapilacak_indirim_orani int=0,
    @baslangic_tarihi datetime=01010001,
    @bitis_tarihi datetime=01010001
    as
    if @kampanya_turID>0 and @kampanya_kurali!=' ' and @kampanya_kural_degeri!=' ' and @yapilacak_indirim_oran_tipi!=' ' and @yapilacak_indirim_orani>0 and 
    @baslangic_tarihi!=01010001 and @bitis_tarihi!=01010001 
    begin
    insert into Kampanyalar (kampanyalar_id,kampanya_turID,kampanya_kurali,kampanya_kural_degeri,yapilacak_indirim_oran_tipi,yapilacak_indirim_orani,baslangic_tarihi,bitis_tarihi)
    values (@kampanyalar_id,@kampanya_turID,@kampanya_kurali,@kampanya_kural_degeri,@yapilacak_indirim_oran_tipi,@yapilacak_indirim_orani,@baslangic_tarihi,@bitis_tarihi);
    select SCOPE_IDENTITY();
    end

    27 Nisan 2016 Çarşamba 12:54
  • List<SqlParameter> bunun yerine bir de SqlParameter[] seklinde dene belki olur
    29 Nisan 2016 Cuma 08:25