Frage

habe ich ein Feld in einer Tabelle, die Azure Datum Mal im String-Format enthält. Ich möchte dies mit einem Datetime-Feld ersetzen, und die Werte in der String-Spalte konvertieren. Was ist der beste Weg, um diesen Ansatz?

In einer SQL würde ich dies tun, indem Sie eine neue Spalte zu schaffen und eine Update-Anweisung ...

laufen
War es hilfreich?

Lösung

Ich habe das selbst nicht ausprobiert, aber hier sind die Schritte, die / sollte / Arbeit. Dies muss ein C # / VB / etc Skript sein.

  1. Ändern Sie die Definition der Klasse a / neu / Mitglied des Typs Datetime enthalten.
  2. Führen Sie die Linq-Abfrage alle Zeilen aus der Tabelle zu laden, und eine for-Schleife laufen, die neue Datetime-Variable auf der Grundlage alter String-Variable bevölkern werden.
  3. Speichern Sie die Objekte zu Tisch. // jetzt Ihre Tabellenspeicher enthält Objekte mit neuen und alten Definition dieser Variablen
  4. Entfernen Sie das alte Feld von Klassendefinition
  5. Laden Sie die Objekte aus der Tabelle wieder und speichern Sie sie w / o etwas zu tun, aber sie schmutzige Markierung. Diese / sollte / get in der Tabelle von serialisiert Strukturen des alten Mitglieds befreien. Nun, wenn Sie das neue Datetime-Feld nehmen Sie den Namen des ursprünglichen String-Variable tut 1 bis 5 Schritte wieder wollen, diesmal die Daten von einem Feld in ein anderes bewegt. Der einzige Unterschied ist, dass Sie nicht Konvertierung müssen wieder tun.

In der Regel ist dies eine komplette PITA und einer der Flüche von Objektdatenbanken und Speicherdienste.

Andere Tipps

Die Azure Tabellen Speicher-Client nativ versteht Datetime (aber nicht Datetime), so dass Sie einfach betrachten wünschen können für Sie das SDK kümmern sich um die Angelegenheit zu lassen.

Ansonsten ist der beste Weg, Datetime darzustellen als Strings ist explizit zu speichern und abrufen, sie als UTC-Werte geschrieben und analysiert das „u“ Format, z.

var dateAsString = myDateTime.ToString("u");

Ich habe keine Ahnung, ob es funktionieren, aber man könnte versuchen „selige Unwissenheit“:

Realtabellenspeicher tatsächlich nicht über die Form Ihrer Einheiten kümmern (Dev Stoff kann anders sein). Ändern Sie Ihre Entitätseigenschaft zu Datetime, aber in der Setter-Test ist der Wert ein für Datum und Uhrzeit, wenn nicht den Wert in einem DT analysieren. So etwas wie

private DateTime myDT
public DateTime MyDT
{
    get
    {
        return myDT;
    }
    set
    {
       DateTime = null;
       if(value is DateTime)
       {
           myDT = value;
       }
       else
       {
           myDT = DateTime.Parse(value);
       }
    }

}

Wir hoffen im Laufe der Zeit, oder explizit in einer Charge, wenn Sie einfach die Entitäten sie laden und speichern wieder wird es, sie alle zu Datetime eingestellt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top