2010-12-03 7 views
2

Ich habe eine Datenbanktabelle von Menschen, die recht einfache Name Adresse Alter usw. mit jeweils einer eindeutigen ID "personID" ist. Verbunden damit habe ich einen EAV-Satz von Tabellen, um zusätzliche Felder zu speichern, die für jede Person möglicherweise unterschiedlich sind. Ich habe bereits Code zum Speichern und Laden von Datensätzen aus der Personentabelle in ein C# person-Objekt oder ein Array von person-Objekten. Ich bin mir jedoch nicht sicher, wie ich mit dem Laden der EAV-Datensätze umgehen soll. Ich dachte über das Hinzufügen eines Arrays zu meinem Person-Objekt namens "Eigenschaften", die ein Array von Eigenschaften mit jeweils "Name" und "Wert" wäre. So zum Beispiel iSpeichern Laden Serialisierung Objekte aus EAV Datenbankstruktur

PersonA.Properties[i].Name = "Age"; 
PersonA.Properties[i].Value = 22; 

Laden ein einzelne Objekt in Ordnung scheint Code könnte i1 Datenbank-Aufruf tun könnte die Details aus der Tabelle Personen und einen zweiten Anruf zu laden, um die Eigenschaften oder zurückgeben 2 Datensätze mit einem Aufruf zu laden. Wie bekomme ich jedoch eine Reihe von Menschen mit jeder Person mit ihrem Array von Eigenschaften. Wenn jemand irgendwelche Links zu Beispielen hat, wäre ich dankbar. Auch Bonuspunkte, wenn Sie mir Tipps geben können, wie Eigenschaften zu implementieren, so dass ich Code wie tun kann:

PersonA.Properties["Age"] = "22"; 
+0

Muss es EAV sein? Ich würde ernsthaft in eine Dokument-basierte Datenbank, zum Beispiel Speicher JSON oder XML –

+0

Ich weiß nichts über Dokument-basierte oder JSON aber unter der Annahme, dass ich die Attribute als XML und das XML als ein Feld in der Personentabelle (wenn das Was ist Ihr Vorschlag? Wie kann ich diese Informationen abfragen? d.h. alle Datensätze mit dem Alter = 22 zum Beispiel zurückgeben? – Jammy

+0

@Jimmy - Nun, eine dedizierte Dokument-db hat eine Abfragesyntax dafür. Vielleicht Raven anschauen? Im SQL-Server können Sie den XML-Datentyp verwenden und entweder xpath-Abfragen ausführen oder (über eine UDF) einen xpath an eine persistent indizierte berechnete Spalte übergeben, also sagen Sie einfach WHERE ColName = value –

Antwort

0

Mit SQL Server, ich bin einverstanden mit Marc über sie in XML zu bekommen. Erleichtert die Abfrage.

Um den Code in das gewünschte Format zu bringen, würde ich ein generisches Dictionary verwenden, wenn das Datum für diese Eigenschaft homogen ist, und dann die XML zwischen diesen hin und her transformieren.

Verwandte Themen