Freigeben über


CA1306: Gebietsschema für Datentypen festlegen

TypeName

SetLocaleForDataTypes

CheckId

CA1306

Kategorie

Microsoft.Globalization

Unterbrechende Änderung

Nicht unterbrechend

Ursache

Durch eine Methode oder einen Konstruktor wurden eine oder mehrere System.Data.DataTable-Instanzen oder System.Data.DataSet-Instanzen erstellt, und die Gebietsschemaeigenschaft (DataTable.Locale oder DataSet.Locale) wurde nicht explizit festgelegt.

Regelbeschreibung

Das Gebietsschema bestimmt kulturspezifische Darstellungselemente für Daten wie die für Zahlenwerte, Währungssymbole und Sortierreihenfolge verwendete Formatierung. Wenn Sie eine DataTable oder ein DataSet erstellen, sollten Sie das Gebietsschema explizit festlegen. Standardmäßig wird die aktuelle Kultur als Gebietsschema für diese Typen verwendet. Für Daten, die in einer Datenbank oder Datei gespeichert sind und global freigegeben werden, sollte das Gebietsschema in der Regel auf die unveränderliche Kultur (CultureInfo.InvariantCulture) festgelegt werden. Wenn Daten in verschiedenen Kulturen freigegeben werden, wird der Inhalt der DataTable oder des DataSet bei Verwendung des Standardgebietsschemas unter Umständen falsch dargestellt oder interpretiert.

Behandeln von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, legen Sie das Gebietsschema für die DataTable oder das DataSet explizit fest.

Wann sollten Warnungen unterdrückt werden?

Eine Warnung dieser Regel kann gefahrlos unterdrückt werden, wenn die Bibliothek oder Anwendung für eine begrenzte lokale Zielgruppe bestimmt ist, wenn die Daten nicht freigegeben werden oder wenn die Standardeinstellung in allen unterstützten Szenarien das gewünschte Verhalten zeigt.

Beispiel

Im folgenden Beispiel werden zwei DataTable-Instanzen erstellt.

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;
        }
    }
}

Siehe auch

Referenz

System.Data.DataTable

System.Data.DataSet

System.Globalization.CultureInfo

CultureInfo.CurrentUICulture

CultureInfo.InvariantCulture