2011-06-16 12 views
7

Creé una tabla que tiene una columna llamada Cantidad y la configuré como Decimal. No puedo encontrar dónde establecerlo como dinero o smallmoney y cuando intento establecer un valor como 0.2, se redondea a 0 ....Usar tipo de dinero en el modelo de Entity Framework primero

¿Cómo puedo usar el dinero con el marco de la entidad?

gracias!

Respuesta

-2

Aplique un poco de código, la versión de EF usas, etc. Cuando se crea la tabla de base de datos en, puede comprobar tabla de asignación, y si se desea se puede cambiar la asignación predeterminada

0

Así que creo que su la pregunta pudo haber sido para un primer acercamiento del código. Además, no estoy seguro de qué versión de SQL está utilizando, mi respuesta a continuación es solo para SQL Server. Pero básicamente lo hará de la misma manera para Oracle o MySQL.

Modelo primera:

Uso de SQL Server, simplemente va a seleccionar ya sea "dinero" o "smallmoney" para el campo, dependiendo de lo grande de un valor que necesita para representar.

Código primera:

que necesitaba para expresar un tipo de dinero hasta 9.999,99

Dentro del editor de EDMX visual, deberá seleccionar la propiedad escalar, ir a las características que a continuación, establecer por type = decimal, luego configure las Facetas como Precisión = 6 Escala = 2. Puede usar las Anotaciones de datos para asegurarse de que el campo se muestre como & como dinero.

+1

prueba un ejemplo de código que podría ser más claro? – sarin

3

Una de las cosas molestas de Entity Framework es que traduce el tipo de variable Decimal como Decimal (18, 0) en SQL.

El número después de la coma es el número de posiciones decimales permitido en el número. Entonces Decimal (18,0) despojará los números después del punto decimal cuando guarde.

Vaya a SQL Server Management stuido, encuentre su base de datos, haga clic derecho en la tabla y seleccione "Diseño". Luego seleccione la columna de la lista y podrá cambiar el tipo de datos a Decimal (18, 2) simplemente escribiendo en el cuadro. Luego guarde los cambios en la mesa. A continuación, guardará el número en los dos lugares decimales habituales utilizados en las transacciones en moneda occidental. Si necesita más lugares decimales, simplemente incremente el segundo número dentro de los corchetes.

Nunca he encontrado una configuración que cambie este valor predeterminado de EF para que genere Decimal (18, 2) en su lugar. Pero luego nunca miré: es bastante fácil cambiar en la base de datos. Pero si alguien sabe de uno, me gustaría saber cómo se hace.

EDIT: Más información - incluyendo la configuración del arreglo - en esta respuesta: Decimal precision and scale in EF Code First

+0

Hm, no he tenido esta experiencia con EF 6/6.1 todos mis decimales se guardan con (18,2) – Aviatrix

+0

No puedo comentar sobre EF6 (no lo uso) pero estoy seguro de que recuerdo que esto sucede con versiones anteriores. Pudo haber sido una aplicación astuta, supongo, irá a cavar en la red por un tiempo. –

+0

Boom: http://stackoverflow.com/questions/3504660/decimal-precision-and-scale-in-ef-code-first –

0

Esto es similar a Decimal precision and scale in EF Code First . Utilizo EF 6.1 y el código primero que por alguna razón define smallmoney como precisión 2 por evento predeterminado aunque es/debería ser 4. Necesita agregar algún código Fluent para arreglar esto. Uso algo como:

public static void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
     modelBuilder.Entity<MYCLASSNAME>().Property(x => x.MYPROPNAME).HasPrecision(5+4, 4); 
} 
Cuestiones relacionadas