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

Zboží Hodnota
RuleId CA1306
Kategorie Microsoft.Globalization
Změna způsobující chybu Nenarušující

Příčina

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

Popis pravidla

Národní prostředí určuje prvky prezentace specifické pro jazykovou verzi pro data, jako je formátování použité pro číselné hodnoty, symboly měny a pořadí řazení. Při vytváření DataTable nebo DataSetbyste měli národní prostředí nastavit explicitně. Ve výchozím nastavení je národní prostředí pro tyto typy aktuální jazykovou verzí. Pro data uložená v databázi nebo souboru a sdílená globálně by se národní prostředí mělo obvykle nastavit na invariantní jazykovou verzi (System.Globalization.CultureInfo.InvariantCulture). Při sdílení dat mezi jazykovými verzemi může použití výchozího DataTable národního prostředí způsobit nesprávné zobrazení nebo DataSet interpretaci obsahu.

Jak opravit porušení

Chcete-li opravit porušení tohoto pravidla, explicitně nastavte národní prostředí pro nebo DataTableDataSet.

Kdy potlačit upozornění

Upozornění z tohoto pravidla je bezpečné potlačit, když je knihovna nebo aplikace pro omezenou místní cílovou skupinu, data se nesdílí nebo výchozí nastavení vrátí požadované chování ve všech podporovaných scénářích.

Příklad

Následující příklad vytvoří dvě DataTable instance.

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é