2016-08-21 4 views
1

Ich habe eine C# -Anwendung mit einer SQL Server-Datenbank.Die beste Möglichkeit zum Speichern der Excel-Zeilenreferenz

Eine Funktion der Anwendung ist es, eine große Excel-Datei zu lesen und Zeile für Zeile zu versuchen, eine ID Spalte mit einer ID in der Datenbank übereinstimmen. Sobald eine Zeile übereinstimmt, werden einige der Werte in einer Tabelle gespeichert.

Später kann der Benutzer den Wert für diese Tabelle ändern, aber ich möchte eine Möglichkeit haben, die ursprünglichen Werte zu überprüfen. Daher habe ich darüber nachgedacht, in dieser Tabelle eine XML-Spalte zu erstellen, in der die ursprünglichen Werte der gesamten Excel-Zeile gespeichert werden.

Ich muss Audit-Trail nicht in die Tabelle implementieren, nur die Excel-Referenzzeile in meiner SQL Server-Tabelle für zukünftige Prüfung beibehalten möchten.

Irgendwelche Ratschläge?

+0

Benötigen Sie nur eine einzelne vorherige Version? Wenn Benutzer mehrere Änderungen vornehmen können, wäre es vielleicht einfacher, eine Spalte "Version" zur Tabelle selbst hinzuzufügen, und bei jeder Änderung fügen Sie eine neue Zeile mit einer erhöhten Versionsnummer ein. Oder erstellen Sie eine separate Audit-Tabelle, die Feld für Feld verfolgt, deren Werte sich geändert haben. Die von Ihnen vorgeschlagene XML-Lösung ist nicht ideal für IMO. –

+0

Nein, es gibt keine Notwendigkeit, weil es nur eine Bearbeitung haben kann. – VAAA

Antwort

1

Externe Speicherung des alten Werts ist auf lange Sicht zu schwer zu pflegen.

Sie müssen nur eine Spalte "OriginalValue_ [Feldname]" in der SQL-Tabelle für jeden Wert hinzufügen, den der Benutzer ändern kann. Wenn Sie die Tabelle auffüllen, geben Sie denselben Wert in [fieldname] und [OriginalValue_fieldname] ein. Wenn der Benutzer Änderungen vornimmt, ändern Sie nur [Feldname], aber der alte Wert ist in der Tabelle richtig.

Wenn dies nicht funktioniert (d. H. Sie dürfen keine Schemaänderungen vornehmen), erstellen Sie eine weitere Tabelle mit den ID-Feldern und den ursprünglichen Werten. Gleicher Ansatz - keine externen Daten.

+1

Dies ist eine gute Antwort, wenn Sie eine überschaubare Anzahl von veränderbaren Feldern haben. Wenn es zu viele veränderbare Felder dafür gibt, wäre eine Alternative die Serialisierung Ihrer Excel-Daten. XML ist eine Möglichkeit, dies zu tun, aber ich würde JSON.NET als eine leichtere Lösung empfehlen. –

Verwandte Themen