227 messaggi dal 07 ottobre 2004
Ciao a tutti

usando questo :

int? MaxId = db.Product_Images.Max(p => p.ID);

ottengo

The null value cannot be assigned to a member with type System.Int32 which
is a non-nullable value type.

nel db realmente non c'è niente , ma essendo che il tipo è nullable dovrebbe
assegnargli null...

dove sta l'inghippo!?

ciao e grazie
426 messaggi dal 17 aprile 2006
l'inghippo dovrebbe risiedere sul fatto che il campo sul db è un id e dunque int32, la Max restituisce il max valore dello stesso tipo immesso e dunque dovrebbe restituire un int32

se così non fosse vedi come linq ha mappato il campo ID di product_Images

Ciao Alessandro
227 messaggi dal 07 ottobre 2004
taccio ha scritto:
l'inghippo dovrebbe risiedere sul fatto che il campo sul db è un id e dunque int32, la Max restituisce il max valore dello stesso tipo immesso e dunque dovrebbe restituire un int32

se così non fosse vedi come linq ha mappato il campo ID di product_Images


Il Campo in questione è un autoincrementale! credo non sia possibile fare
cio che mi dici, cioè mettere il valore di default!
426 messaggi dal 17 aprile 2006
scusa forse mi sono espresso male. io non dico di mettere alcun valore, ho solo risposto ad una tua domanda cioè dove è l'inghippo?

il campo nel db è come sostieni un autoincrementale e dunque non è nullabile.
se il campo nel db non è nullabile il tipo di dato restituito da MAX(nome_campo) sarà un int32 e non un int? dunque scatta l'eccezione che ti da.

se invece avessi nel DATABASE una colonna con un campo di tipo int ma nullabile il contextmanager per linq la mapperebbe con un int? ed il
max(su_quella_colonna) restituirebbe un int? e dunque non tirerebbe eccezioni.

infine se la colonna fosse un decimal nullabile (parlo sempre del db) la mappatura di linq darebbe un decimal? ed il relativo .Max(colonna) darebbe un tipo decimal?

se invece nel db hai un decimal non nullabile la mappa di linq ed il relativo Max da un decimal
ora se il tipo non contempla valori nulli restituisce appunto errore, cioè il tuo errore, e per rispondere alla tua domanda li c'è l'inghippo che eludi tranquillamente con un bel try catch

Ciao Alessandro

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.