2012-04-14 15 views
0

Ich möchte dynamischen Eigenschaften verwenden, die wie folgt aussehen:dynamisch/benutzerdefinierte Eigenschaften

public class CustomProperty 
{ 
    public string PropType { get; set; } 
    public string PropValue { get; set; } 
    public string PropName { get; set; } 
    ... 
} 

... und dann diese Eigenschaften in einer Datenbank zu speichern, wie folgt aus:

PropType PropValue PropName 
-------- --------- -------- 
String  "William" "Name" 
Int64  "21"  "Age" 
String  "John"  "Name" 
Int64  "32"  "Age" 
String  "Brown"  "Haircolor" 
... 

I Ich glaube nicht, dass ich der erste bin, der eine solche Idee hat, also suche ich nach einer Implementierung (poen source/nuget etc.). Aber ich habe Schwierigkeiten, einen zu finden.

Also meine Frage ist: gibt es eine Implementierung von dynamischen Eigenschaften, die verwendet werden können (oder verbessert, wenn nötig)?

Edit: Als richardtallent Zeiger raus, suche ich nach dem EAV-Muster. Also, gibt es eine Implementierung dafür, die verwendet werden kann? Oder muss ich selbst etwas schreiben? Ich würde denken, dass es schon oft gemacht wurde.

+0

Haben Sie LINQ-to-SQL versucht, wenn Sie das suchen? –

Antwort

2

Was Sie beschreiben, wird oft als "EAV" (Entity-Attribute-Value) -Muster bezeichnet.

Viele betrachten es als ein Anti-Pattern, wenn es auf relationale Datenbanken angewendet wird, da seine Verwendung Auswirkungen auf die Aufrechterhaltung ordnungsgemäßer normalisierter Daten und effizienter CRUD-Operationen hat. Es hat jedoch seine Verwendung.

Variationen zu diesem Thema werden in No-SQL-Datenbanken von Lotus Notes bis Google BigTable verwendet. Wenn Sie also nicht an SQL Server gebunden sind, sollten Sie besser in C# -fähige No-SQL-Datenbanken wie MongoDB schauen.

Wenn Sie nach etwas suchen, das zu einem traditionellen RDBMS serialisiert, sind mir keine Open-Source-Lösungen bekannt. In C# gibt es ExpandoObjects, aber ich weiß nicht, ob dieses System standardmäßig die Datenbank-Serialisierung/Deserialisierung umfasst.

+0

yeah Ich denke, EAV ist, was ich suche. Um genau zu sein: eine Implementierung einschließlich der Serialisierung des EAV-Musters. – user369117

1

Es gibt Expando object beginnend mit der Version 4.0: dynamisch expandierendes und schrumpfendes Objekt.

Wenn dies nicht das ist, was Sie suchen, bitte klären.

Verwandte Themen