Condividi tramite


CA1306: Specificare le impostazioni locali per i tipi di dati

TypeName

SetLocaleForDataTypes

CheckId

CA1306

Category

Microsoft.Globalization

Breaking Change

Non sostanziale

Causa

Un metodo o un costruttore ha creato una o più istanze System.Data.DataTable o System.Data.DataSet e non ha impostato in modo esplicito la proprietà Locale (DataTable.Locale o DataSet.Locale).

Descrizione della regola

Le impostazioni locali determinano elementi di presentazione specifici delle impostazioni cultura per i dati, ad esempio la formattazione utilizzata per valori numerici, simboli di valuta e il criterio di ordinamento. Quando si crea un oggetto DataTable o DataSet, è opportuno definire in modo esplicito le impostazioni locali. Per impostazione predefinita, le impostazioni locali per questi tipi sono rappresentate dalle impostazioni cultura attuali. Per i dati archiviati in un database o in un file e condivisi globalmente, le impostazioni locali devono essere, in condizioni normali, impostate sulle impostazioni cultura invarianti (CultureInfo.InvariantCulture). Quando i dati sono condivisi tra più impostazioni cultura, l'utilizzo delle impostazioni locali predefinite può causare la presentazione o l'interpretazione errata dell'oggetto DataTable o DataSet.

Come correggere le violazioni

Per correggere una violazione di questa regola, definire in modo esplicito le impostazioni locali per l'oggetto DataTable o DataSet.

Esclusione di avvisi

L'esclusione di un avviso da questa regola è sicura se la libreria o l'applicazione è destinata a un ridotto pubblico locale, i dati non sono condivisi o l'impostazione predefinita produce il comportamento desiderato in tutti gli scenari supportati.

Esempio

Nell'esempio riportato di seguito vengono create due istanze di 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;
        }
    }
}

Vedere anche

Riferimenti

System.Data.DataTable

System.Data.DataSet

System.Globalization.CultureInfo

CultureInfo.CurrentUICulture

CultureInfo.InvariantCulture