Sdílet prostřednictvím


CA1306: Nastavte národního prostředí pro datové typy

TypeName

SetLocaleForDataTypes

CheckId

CA1306

Kategorie

Microsoft.Globalization

Narušující změna

Nenarušující

Příčina

Metoda nebo konstruktor vytvořili jednu nebo více instancí DataTable nebo DataSet a explicitně nenastavili vlastnost národního prostředí (DataTable.Locale nebo DataSet.Locale).

Popis pravidla

Národní prostředí určuje prvky prezentace specifické kultury pro data, například formátování použité pro číselné hodnoty, symbolů měny a pořadí řazení.Při vytváření DataTable nebo DataSet, by mělo být explicitně nastaveno národní prostředí.Ve výchozím nastavení je u těchto typů nastaveno národní prostředí na aktuální jazykovou verzi.Pro data, která jsou uložena v databázi nebo v souboru a jsou globálně sdílena, je zapotřebí obvykle nastavit národní prostředí na neutrální kulturu (CultureInfo.InvariantCulture).Při sdílení dat mezi kulturami může obsah může použití výchozího národního prostředí způsobit nesprávné zobrazení obsahu nebo nesprávnou interpretaci DataTable nebo DataSet.

Jak vyřešit porušení

Pro napravení porušení tohoto pravidla je zapotřebí nastavit národní prostředí pro DataTable nebo DataSet.

Kdy potlačit upozornění

Je bezpečné potlačit varování pro toto pravidlo v případě, pokud je knihovna nebo aplikace určena pro místní omezenou skupinu, pokud nejsou sdílena data nebo výchozí nastavení představuje požadované chování ve všech podporovaných scénářích.

Příklad

Následující příklad vytvoří dvě instance 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;
        }
    }
}

Viz také

Referenční dokumentace

DataTable

DataSet

CultureInfo

CultureInfo.CurrentUICulture

CultureInfo.InvariantCulture