Salve, sto sviluppando un piccolo ecommerce in asp.net e c#.
Nel carrello memorizzo i prodotti aggiunti dall'utente considerando che, per alcuni prodotti, si può scegliere un attributo da una dropdownlist.
Nel mio database ho una tabella "carrelli" con campi:

"ID" ---> è una guid generata con i cookie
"IDProdotto" ---> id del prodotto associato
"IDValoreAttributo" ---> id dell'eventuale attributo associato (0 se nessun attributo associato)
ed altri campi come ad esempio la quantità e un'eventuale descrizione testuale degli attributi scelti

La chiave primaria è costituita dalla tripla (ID,IDProdotto,IDValoreAttributo).

Scorrendo il catalogo riesco ad inserire i prodotti nella tabella carrelli del database correttamente, ad es.:

"guid....","1","0" ----> un prodotto senza attributo
"guid....","21","10" ---> un prodotto con un determinato valore per un attributo
"guid....","21","15" ---> lo stesso prodotto di prima ma con valore attributo diverso

Ora il problema sorge nella visualizzazione del carrello: io uso la seguente query:

SELECT prodotti.id, prodotti.nome, carrelli.attributi carrelli.quantità, prodotti.prezzo * carrelli.quantità as subtotale from carrelli inner join prodotti on carrelli.idprodotto = prodotti.id where carrelli.id = cartid

in cui cartid è il guid che passo come parametro alla query.

Se eseguo la query dal mio manager sql il risultato è quello corretto, invece se richiamo la query dalla mia applicazione web mi visualizzza correttamente tutti i prodotti senza attributi, ma soltanto un prodotto con attributi, cioè ad es.:

"guid....","1","0"
"guid....","21","15" ---> mi fa vedere, del prodotto 21, solo quello con idvaloreattributo più alto

non mi visualizza quindi il prodotto nel carrello: "guid....","21","10"

Inoltre se inserisco nella mia query la selezione anche per il campo carrelli.idvaloreattributo,
il manager mi visualizza tutto correttamente, ma l'applicazione mi dà errore e mi dice che c'è un problema di vincoli per le chiavi.

Qualche idea??