Puede utilizar el tipo de SQL Server decimal
(documentation here). Eso le permite especificar una precisión y una escala para los números en la base de datos, que puede configurar para que sea el mismo que en su código C#.
Su pregunta, sin embargo, parece ser sobre mapear el tipo decimal .NET al tipo decimal de SQL Server. Y desafortunadamente, eso no es sencillo. El decimal de SQL Server, con la máxima precisión, cubre el rango de -10 +1 a 10 -1. En .NET, sin embargo, puede cubrir desde ± 10 -28 hasta ± 7.9 × 10 , dependiendo del número.
La razón es que, internamente, .NET trata los decimales de manera muy similar a los flotantes, lo almacena como un par de números, una mantisa y un exponente. Si tienes una mantisa especialmente grande, vas a perder algo de la precisión. Básicamente, .NET le permite mezclar números que tienen una alta y una baja escala; SQL Server requiere que lo elijas para una columna dada antes de tiempo.
En resumen, tendrá que decidir cuál es el rango válido de valores decimales, para sus propósitos, y asegurarse de que tanto su programa como la base de datos puedan manejarlo. Debe hacer eso de todos modos para su programa (si está mezclando valores como 10 -28 con 7.9 × 10 , no puede confiar en el tipo decimal de todos modos).
+1 ¡Bonita pregunta! Iba a hacer la misma pregunta en SO hace 8 meses, ¡pero lo olvidé por completo! – spong