none
LinkToSql: NullReferenceException...? RRS feed

  • Domanda

  • Ciao a tutti, ho creato un'applicazione che fa uso di LinqToSql, al click su un pulsante vengono salvati nel Db i dati presi da alcune label. Solo che genera questo errore:

    System.NullReferenceException was unhandled by user code
      Message=Object reference not set to an instance of an object.
      Source=Business
      StackTrace:
           at Business.DataClassDbMailDataContext..ctor() in C:\Users\Ricardo\Documents\Visual Studio 2010\Projects\WebSite1\Business\DataClassDbMail.designer.cs:line 35
           at Business.admin.addMail(tbl_mail tblmail) in C:\Users\Ricardo\Documents\Visual Studio 2010\Projects\WebSite1\Business\admin.cs:line 14
           at _Default.Button1_Click(Object sender, EventArgs e) in c:\Users\Ricardo\Documents\Visual Studio 2010\WebSites\WebSite1\Default.aspx.cs:line 66
           at System.Web.UI.WebControls.Button.OnClick(EventArgs e)
           at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
           at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
           at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
           at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
           at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
      InnerException:

    da come sembra (mi corregerete se non è cosi) pare che sto passando un valore null, allora ho provato a selezionare il consenso (consenti valori null) direttamente nel db. Ma purtroppo niente.
    Avwete qualche idea?
    Grazie mille.

    Ricardo Bagnati - www.vicenzasoftware.com
     
    • Modificato Ricardo78 martedì 13 dicembre 2011 18:39
    martedì 13 dicembre 2011 18:37

Risposte

  • Ho risolto, ma non come volevo. Alla fine ho fatto delle prove ed ho capito che in qualche modo andava in conflitto con il resto dell'applicazione. Mi spiego meglio, nel progetto che sto realizzando ho creato in tutto 3 progetti: 1 il sito web, 1 un progetto (sostanzialmente una webmail) e l'altro il progetto che ho chiamato Business, dedicato all parte dell'accesso ai dati (CRUD).

     

    Togliendo la parte Business, ed implementando direttamente nel progetto del sito tutta la parte di accesso ai dati, funziona. Lo lascero così, anche se avrei preferito diversamente...

     

    La domanda però rimane, chissà perchè non funzionava...

     

    Grazie a tutti e auguri di un buon Natale e di un 2012 migliore!!


    Ricardo Bagnati - www.vicenzasoftware.com
    • Contrassegnato come risposta Ricardo78 giovedì 22 dicembre 2011 09:28
    giovedì 22 dicembre 2011 09:28

Tutte le risposte

  • Ciao Ricardo,

    non si tratta di valori nulli nei dati, ma dell'accesso ad un oggetto che non hai istanziato (Object reference not set to an instance of an object).

    Prova a postare il codice che richiami quando clicchi sul pulsante, rimuovendo ovviamente le informazioni sensibili.

     


    Danilo Dominici MCP MCDBA MCITP MCSE MCAD Questo post è fornito "così com'è". Non conferisce garanzie o diritti di alcun tipo. Ricorda di usare la funzione "segna come risposta" per i post che ti hanno aiutato a risolvere il problema e "deseleziona come risposta" quando le risposte segnate non sono effettivamente utili. Questo è particolarmente utile per altri utenti che leggono il thread, alla ricerca di soluzioni a problemi similari. ENG: This posting is provided "AS IS" with no warranties, and confers no rights. Please remember to click "Mark as Answer" on the post that helps you, and to click "Unmark as Answer" if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.
    mercoledì 14 dicembre 2011 08:55
  • Ciao Ricardo,

    non si tratta di valori nulli nei dati, ma dell'accesso ad un oggetto che non hai istanziato (Object reference not set to an instance of an object).

    Prova a postare il codice che richiami quando clicchi sul pulsante, rimuovendo ovviamente le informazioni sensibili.

     


    Danilo Dominici MCP MCDBA MCITP MCSE MCAD Questo post è fornito "così com'è". Non conferisce garanzie o diritti di alcun tipo. Ricorda di usare la funzione "segna come risposta" per i post che ti hanno aiutato a risolvere il problema e "deseleziona come risposta" quando le risposte segnate non sono effettivamente utili. Questo è particolarmente utile per altri utenti che leggono il thread, alla ricerca di soluzioni a problemi similari. ENG: This posting is provided "AS IS" with no warranties, and confers no rights. Please remember to click "Mark as Answer" on the post that helps you, and to click "Unmark as Answer" if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.


    Ciao e grazie per la risposta... hai ragione, non ho messo il codice incriminato! Eccolo di seguito:

                    //Salvo i dati nel Db:
                    tbl_mail tbl = new tbl_mail();
                    tbl.mailFrom = da.Text.Trim();
                    tbl.body = body.Text.Trim();
                    tbl.oggetto = oggetto.Text.Trim();
                    admin.addMail(tbl);
    

    nella mia classe admin invece ho:

            #region insertMail
    
            public static void addMail(tbl_mail tblmail)
            {
                using (DataClassDbMailDataContext ca = new DataClassDbMailDataContext())
                {
                    ca.tbl_mails.InsertOnSubmit(tblmail);
                    ca.SubmitChanges();
                }
    
            }
            #endregion
    


    Se ti serve ancora qualche altro dettaglio sono ovviamente qua!

     

    Grazie.


    Ricardo Bagnati - www.vicenzasoftware.com
    mercoledì 14 dicembre 2011 16:03
  • Che versione di Visual Studio e Framework utilizzi ? Io ho provato da VS2010 + Framework 3.5 e funziona correttamente...

    Hai fatto modifiche alla struttura della tabella non riportate nella classe dbml ?

     


    Danilo Dominici MCP MCDBA MCITP MCSE MCAD Questo post è fornito "così com'è". Non conferisce garanzie o diritti di alcun tipo. Ricorda di usare la funzione "segna come risposta" per i post che ti hanno aiutato a risolvere il problema e "deseleziona come risposta" quando le risposte segnate non sono effettivamente utili. Questo è particolarmente utile per altri utenti che leggono il thread, alla ricerca di soluzioni a problemi similari. ENG: This posting is provided "AS IS" with no warranties, and confers no rights. Please remember to click "Mark as Answer" on the post that helps you, and to click "Unmark as Answer" if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.
    venerdì 16 dicembre 2011 12:22
  • Che versione di Visual Studio e Framework utilizzi ? Io ho provato da VS2010 + Framework 3.5 e funziona correttamente...

    Hai fatto modifiche alla struttura della tabella non riportate nella classe dbml ?

     


    Danilo Dominici MCP MCDBA MCITP MCSE MCAD Questo post è fornito "così com'è". Non conferisce garanzie o diritti di alcun tipo. Ricorda di usare la funzione "segna come risposta" per i post che ti hanno aiutato a risolvere il problema e "deseleziona come risposta" quando le risposte segnate non sono effettivamente utili. Questo è particolarmente utile per altri utenti che leggono il thread, alla ricerca di soluzioni a problemi similari. ENG: This posting is provided "AS IS" with no warranties, and confers no rights. Please remember to click "Mark as Answer" on the post that helps you, and to click "Unmark as Answer" if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.

    Si anch'io ho VS2010 (4.0 pero) avevo fatto una modifica nel db ma poi ho cancellato e rifatto tutta la parte di accesso ai dati... dici che sia questo?
    Ricardo Bagnati - www.vicenzasoftware.com
    venerdì 16 dicembre 2011 14:25
  • Ciao Ricardo,

     

    ho provato anch'io il tuo codice e non ho avuto problemi, quindi l'errore può essere dovuto a queste modifiche che hai fatto... prova a mettere un breakpoint su questa riga

      ca.tbl_mails.InsertOnSubmit(tblmail);
    


    e a lanciare il debug, verifica che tutte le proprietà della tblmail siano valorizzate e procedi con il tasto F10 per capire dove si incastra ;)

     

    Fammi sapere

    Buona giornata


    Carmine Punella
    Blog: Link
    domenica 18 dicembre 2011 10:34
  • Ciao Ricardo,

     

    ho provato anch'io il tuo codice e non ho avuto problemi, quindi l'errore può essere dovuto a queste modifiche che hai fatto... prova a mettere un breakpoint su questa riga

     

      ca.tbl_mails.InsertOnSubmit(tblmail);
    

     


    e a lanciare il debug, verifica che tutte le proprietà della tblmail siano valorizzate e procedi con il tasto F10 per capire dove si incastra ;)

     

    Fammi sapere

    Buona giornata


    Carmine Punella
    Blog: Link


    Ciao Carmine, non arriva a quella riga fermandosi di fatto prima (nella connessione verso il db), ecco l'errore piu dettagliato:

     

    table_mails 'this.table_mails' threw an exception of type 'System.NullReferenceException' System.Data.Linq.Table<Business.table_mail> {System.NullReferenceException}

    quindi credo sia dovuto alla tabella nel db...

     


    Ricardo Bagnati - www.vicenzasoftware.com
    lunedì 19 dicembre 2011 08:57
  • Ho risolto, ma non come volevo. Alla fine ho fatto delle prove ed ho capito che in qualche modo andava in conflitto con il resto dell'applicazione. Mi spiego meglio, nel progetto che sto realizzando ho creato in tutto 3 progetti: 1 il sito web, 1 un progetto (sostanzialmente una webmail) e l'altro il progetto che ho chiamato Business, dedicato all parte dell'accesso ai dati (CRUD).

     

    Togliendo la parte Business, ed implementando direttamente nel progetto del sito tutta la parte di accesso ai dati, funziona. Lo lascero così, anche se avrei preferito diversamente...

     

    La domanda però rimane, chissà perchè non funzionava...

     

    Grazie a tutti e auguri di un buon Natale e di un 2012 migliore!!


    Ricardo Bagnati - www.vicenzasoftware.com
    • Contrassegnato come risposta Ricardo78 giovedì 22 dicembre 2011 09:28
    giovedì 22 dicembre 2011 09:28