Compartir a través de


CA1306: Establecer configuración regional para tipos de datos

Nombre de tipo

SetLocaleForDataTypes

Identificador de comprobación

CA1306

Categoría

Microsoft.Globalization

Cambio problemático

Poco problemático

Motivo

Un método o constructor creó una o más instancias de System.Data.DataTable o System.Data.DataSet y no estableció explícitamente la propiedad de configuración regional (DataTable.Locale o DataSet.Locale).

Descripción de la regla

La configuración regional determina los elementos de presentación específicos de la referencia cultural para los datos, como el formato para los valores numéricos, símbolos de moneda y criterio de ordenación.Cuando se crea DataTable o DataSet debe establecerse explícitamente la configuración regional.De forma predeterminada, la configuración regional para estos tipos es la referencia cultural actual.Para los datos almacenados en un archivo o una base de datos y se comparte de forma global, la configuración regional debe establecerse normalmente en la referencia cultural invariable (CultureInfo.InvariantCulture).Cuando las referencias culturales comparten datos, el hecho de utilizar la configuración regional puede provocar que el contenido de DataTable o DataSet se presente o se interprete incorrectamente.

Cómo corregir infracciones

Para corregir una infracción de esta regla, establezca explícitamente la configuración regional para DataTable o DataSet.

Cuándo suprimir advertencias

Es seguro suprimir una advertencia de esta regla cuando la biblioteca o la aplicación sea para un público local limitado, los datos no estén compartidos o la configuración predeterminada produzca el comportamiento deseado en todos los escenarios compatibles.

Ejemplo

El ejemplo siguiente crea dos instancias de DataTable.

using System;
using System.Data;
using System.Globalization;

namespace GlobalLibrary
{
    public class MakeDataTables
    {
        // Violates rule: SetLocaleForDataTypes.
        public DataTable MakeBadTable()
        {
            DataTable badTable = new DataTable("Customers");
            DataColumn keyColumn = badTable.Columns.Add("ID", typeof(Int32));
            keyColumn.AllowDBNull = false;
            keyColumn.Unique = true;
            badTable.Columns.Add("LastName", typeof(String));
            badTable.Columns.Add("FirstName", typeof(String));
            return badTable;
        }

        public DataTable MakeGoodTable()
        {
            DataTable goodTable = new DataTable("Customers");
            // Satisfies rule: SetLocaleForDataTypes.
            goodTable.Locale = CultureInfo.InvariantCulture;
            DataColumn keyColumn = goodTable.Columns.Add("ID", typeof(Int32));

            keyColumn.AllowDBNull = false;
            keyColumn.Unique = true;
            goodTable.Columns.Add("LastName", typeof(String));
            goodTable.Columns.Add("FirstName", typeof(String));
            return goodTable;
        }
    }
}

Vea también

Referencia

System.Data.DataTable

System.Data.DataSet

System.Globalization.CultureInfo

CultureInfo.CurrentUICulture

CultureInfo.InvariantCulture