Domanda

Sto lavorando con LINQ per la prima volta e volevo che la mappatura funzionasse quando ho un tipo money in SQL, ma la proprietà dell'oggetto del mio dominio è di tipo double.Come posso esprimerlo nel file XML o nel codice in modo che la mappatura non generi la solita eccezione "cast non valido"?

È stato utile?

Soluzione

Nel file XML DBML, puoi impostare l'attributo Expression di un elemento Column su qualcosa di simile:

 <Column Name="Table1.Amount" DbType="smallint" Type="System.Int32" 
         Expression="CAST(Table1.Amount as int)" />

Altri suggerimenti

Leggermente fuori tema, ma questo è qualcosa che tutti dovrebbero sapere quando lavorano con il tipo Money in SQLServer.

Non vuoi usare un doppio, vuoi usare un decimale.

Un Double è un float lungo e l'aritmetica in virgola mobile non dovrebbe mai essere utilizzata per i calcoli finanziari.

Pensa a questo, le frazioni 1/3, 1/3 e 1/3 equivalgono a 1.Tuttavia, quando espresso come doppio, ovvero:

.3333 + .3333 + .3333 = .9999 diverso da 1.

Potresti pensare che perdere un millesimo di centesimo sia banale, ma non lo è quando lavori con i soldi di qualcun altro.

Utilizzare System.Decimal.

abbastanza sicuro che Money sia mappato su System.Decimal

Controlla qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top