Udostępnij za pośrednictwem


CA1306: Ustaw ustawienia regionalne dla typów danych

TypeName

SetLocaleForDataTypes

CheckId

CA1306

Kategoria

Microsoft.Globalization

Zmiana kluczowa

Niekluczowa

Przyczyna

Metoda lub konstruktor tworzy jedno lub więcej wystąpień System.Data.DataTable lub System.Data.DataSet i nie ustawia jawnie właściwości ustawień regionalnych (DataTable.Locale lub DataSet.Locale).

Opis reguły

Ustawienia regionalne określają specyficzne dla kultur elementy prezentacji dla danych, takie jak formatowanie, które jest używane dla wartości liczbowych, symbole walut i porządek sortowania.Podczas tworzenia DataTable lub DataSet, należy jawnie ustawić ustawienia regionalne.Domyślnie, ustawieniem regionalnym dla tych typów jest bieżąca kultura.Dla danych przechowywanych w bazie danych lub pliku i globalnie udostępnionych, ustawienia regionalne zwykle należy ustawić na kulturą niezmienną (CultureInfo.InvariantCulture).Gdy dane są udostępniane dla różnych kultur, użycie domyślnych ustawień regionalnych może spowodować, że zawartość DataTable lub DataSet będzie przedstawiana lub interpretowana niepoprawnie.

Jak naprawić naruszenia

Aby naprawić naruszenie tej zasady, jawnie ustaw ustawienia regionalne dla DataTable lub DataSet.

Kiedy pominąć ostrzeżenia

Można bezpiecznie wyłączyć ostrzeżenia od tej reguły, gdy biblioteka lub aplikacja jest ograniczona do odbiorców lokalnych, dane nie są udostępniane lub domyślne ustawienie daje pożądane zachowanie we wszystkich obsługiwanych scenariuszach.

Przykład

Poniższy przykład tworzy dwa wystąpienia 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;
        }
    }
}

Zobacz też

Informacje

System.Data.DataTable

System.Data.DataSet

System.Globalization.CultureInfo

CultureInfo.CurrentUICulture

CultureInfo.InvariantCulture