verwendetes Datenbanksystem: <MSSQL 2008 r2>
Hi,
ich bin grad am überlegen wie ich folgendes realisieren kann.
Ich habe eine Tabelle:
TableX
=========
Id
Name
IsActive
IsDeleted
Nun soll der Benutzer eigene benutzerdefinierte Spalten hinzufügen können.
Es werden die zusätzlichen Spalten über ein ALTER-Statement zur Tabelle hinzugefügt. Problem ist aber dabei dass der DbContext nix davon mitbekommt bzw. die zusätzlichen Spalten hier nicht bekannt sind. Ich müsste dazu ja das Model aktualisieren und neu kompilieren.
Es gibt 2 weitere Tabellen
TableFields
=======
Id
FieldName
FieldType
TableFieldValues
==========
TableXId
FieldId
Value
Hiermit könnte ich relativ leicht neue Spalten anlegen und die Daten dazu speichern ohne die DB-Struktur angreifen zu müssen.
Problem ist hier (vermutlich) das Lesen der Daten aus der Datenbank, weil ich hier ja eine Art PivotTable auslesen müsste oder über eine Liste oder Dictionary.
Dann verliere ich aber wieder den Vorteil der Typisierung...
Hat jemand von euch sowas schon mal gemacht, bzw. gibts hierzu Best Practices?
thx
lg
Hallo M@tuk
Anmerkung :
=> Der Profile Provider (teil des Membership-Providers), löst das "Selbe" Problem in einem Feld.
Die Werte werden einfach getrennt und wieder ausgelesen. (Benutzerspezifisch)
Speicherart Profile Provider
In dem WebConfig wird dann der Typ zugewiesen :
Zuweisung Property - Typ (ja bei Dir würde die Typisierung verloren gehen)
Damit könntest du Dir ggf. die 2 Tabellen schenken 😉
(Vorausgesetzt ein Benutzer hat nicht tausende custom "Spalten")
Beste Grüsse
Diräkt
Edit:
Hier noch ein interessanter Link
Hi...
Problem mit dem Speichern in einem Feld ist hald, dass ich gerne auf die benutzerdefinierten "Spalten" filtern und sortieren können möchte und das wird damit etwas schwierig.
lg