CA1306: Definir localidade para tipos de dados

Item Valor
RuleId CA1306
Categoria Microsoft.Globalization
Alteração da falha Sem interrupção

Causa

Um método ou construtor criou uma ou mais instâncias System.Data.DataTable e System.Data.DataSet não definiu explicitamente a propriedade de localidade (System.Data.DataTable.Locale ou System.Data.DataSet.Locale).

Descrição da regra

A localidade determina os elementos de apresentação específicos da cultura para dados, como a formatação usada para valores numéricos, símbolos de moeda e ordem de classificação. Ao criar uma DataTable ou um DataSet, você deverá definir a localidade explicitamente. Por padrão, a localidade para esses tipos é a cultura atual. Para dados armazenados em um banco de dados ou arquivo e compartilhados globalmente, a localidade normalmente deve ser definida como a cultura invariável (System.Globalization.CultureInfo.InvariantCulture). Quando os dados são compartilhados entre culturas, o uso da localidade padrão pode fazer com que o conteúdo de DataTable ou DataSet seja apresentado ou interpretado incorretamente.

Como corrigir violações

Para corrigir uma violação dessa regra, defina explicitamente a localidade da DataTable ou do DataSet.

Quando suprimir avisos

É seguro suprimir um aviso dessa regra quando a biblioteca ou o aplicativo for para um público local limitado, os dados não forem compartilhados ou a configuração padrão produzir o comportamento desejado em todos os cenários com suporte.

Exemplo

O exemplo a seguir cria duas instâncias 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;
        }
    }
}

Confira também