2014-04-24 8 views
7

Il campo nel database Oracle con tipo number(10), che è maggiore della gamma .net Int32. Ora sto utilizzando il framework di entità per recuperare i dati da questa tabella e mapparlo all'entità database di questa tabella. Ma, ho ottenuto questo errore quando ho recuperare i dati:Entity framework, map oracle tipo numero di database (10) a .net Int32

var competitions = db.PKG_API_PORTAL_SP_GETFBCOMPETITION().ToList(); 

Il tipo del campo chiave '' dovrebbe essere 'System.Int32', ma il valore fornito è in realtà di tipo 'sistema .Int64' .

Ho trovato questa domanda Oracle Data Provider to CLR type mapping

e qui è l'articolo per spiegare come il tipo di dati stato tradotto http://www.devart.com/dotconnect/oracle/docs/DataTypeMapping.html

Ma ora ho bisogno di una soluzione per risolvere questo problema.

+0

I seconda questa domanda. Odio modificare manualmente emdx ecc. – ginalster

+0

hai provato a dichiarare il campo chiave in cui lo memorizzi esplicitamente come int 64? – jclozano

+0

hai considerato di utilizzare una vista per mappare il numero (10) a un altro tipo di dati (ad esempio numero (8) o simile)? –

risposta

0

Sto assumendo poiché si sta utilizzando DotConnect per Oracle con EF che si restituisce un Refcursor dalla funzione/SP che viene proiettata su un tipo di dati.

Sono disponibili tre opzioni per risolvere il problema: 1- Modificare il tipo nell'oggetto che si sta mappando su un Int64. Questa è la soluzione più semplice. Se si sta utilizzando lo sviluppatore di entità, basta selezionare il tipo nella mappatura, modificare il tipo in "int64", fare clic su OK, rigenerare le classi.

2- Modificare il Refcursor che viene restituito al downcast il numero (10) a un Numero (9). Questo probabilmente danneggerà le prestazioni e alla fine andrà a rompere qualcosa, quindi non lo consiglierei.

0

Ogni colonna di tipo NUMERO (n) rappresenta un INT64. "n" funge da vincolo per la tabella, ma tutti i dati in esso contenuti hanno la stessa dimensione. È meglio passare a un tipo Int64 nel lato client. Cheers!

Problemi correlati