Ich habe aC# Objekt ‚Produkt‘ mit einer Eigenschaft genannt: Offset
In der Datenbank das Feld ist vom Typ nvarchar (50)Speicher/Abrufen einen JSON-String in der Datenbank macht es einfach, mit
Ich werde einen JSON-Wert wie folgt speichern: {"y": 0, "m": 0, "d": 0}
Ich möchte eine gute Art der Arbeit mit wissen eine Eigenschaft wie diese in meinem Code. Hier ist, wie ich es derzeit tue:
public class Product
{
public int Id {get; set;}
public string Description {get; set;}
public decimal Price {get; set;}
public int OffsetYears { get; set; }
public int OffsetMonths { get; set; }
public int OffsetDays { get; set; }
public string Offset
{
get
{
Offset offset = new Offset()
{
Y = OffsetYears,
M = OffsetMonths,
D = OffsetDays
};
return JsonConvert.SerializeObject(offset);
}
set
{
OffsetObj offset = JsonConvert.DeserializeObject<Offset>(value);
OffsetYears = offset.Y;
OffsetMonths = offset.M;
OffsetDays = offset.D;
}
}
private class OffsetObj
{
public int Y { get; set; }
public int M { get; set; }
public int D { get; set; }
}
}
Also dann, wenn ich Werte aus dem User in der Benutzeroberfläche akzeptieren würde ich die OffsetYears, OffsetMonths gesetzt und OffsetDays Eigenschaften .. Also in meinem Repository kann ich nur speichern Offset .
Und beim Abrufen von Werten aus der Datenbank werde ich einfach mit OffsetYears, OffsetMonths und OffsetDays Eigenschaften in meinem Code arbeiten.
Gibt es einen besseren Weg, mit so etwas umzugehen? Ich habe einfach das Gefühl, dass ich nicht alle meine C# Ressourcen verwende. Zum Beispiel, wenn ein anderer Entwickler Offset versehentlich durch den Code setzt, vorausgesetzt, dass ein beliebiges String-Format darin enthalten ist.
Oder bin ich besser dran, nur 3 separate Integer-Felder in der Datenbank erstellen und all dies zu vermeiden ...
Ich denke, Sie wollen Serialized OffsetObj stattdessen von der Offset-Eigenschaft zurückgeben. Und ja, Sie haben Recht, um Mehrdeutigkeiten zu reduzieren und Ihre Daten zu normalisieren (wenn Sie no-sql nicht verwenden), ziehen Sie in Erwägung, das JSON in ein C# -Objekt in entsprechende Datenbankattribute der jeweiligen Entität zu konvertieren. – Vaibhav