Laden...

nHibernate + Model Klassen erweitern

Erstellt von Campy vor 10 Jahren Letzter Beitrag vor 10 Jahren 797 Views
C
Campy Themenstarter:in
439 Beiträge seit 2008
vor 10 Jahren
nHibernate + Model Klassen erweitern

verwendetes Datenbanksystem: MSSQL 2012

Hallo zusammen,

ich verwende nHibernate in einer Anwendung.
Nun taucht immer wieder die Herausforderung auf, zusätzliche Felder für verschiedene Kunden in der Datenbank zu speichern.

Momentan passe ich dazu immer die Models in der Standard-DLL an.
Gibt es die Möglichkeit die Models in einer anderen DLL zu erweitern (z.B. mit partial Klassen) und diese Custom Model DLL auch nHibernate greifbar zu machen?

Evtl. gibt es für das Problem auch noch andere Lösungsmöglichkeiten?

Vielen Dank für Eure Hilfe!
Campy

A programmer is just a tool, which converts coffeine into code! 🙂

16.835 Beiträge seit 2008
vor 10 Jahren

Relationale Datenbanken sind ungeeignet für dynamische Schemen.
Siehe Nur Minimalanforderung von Feldern in DB ?

Ein anderes Vorgehen als Deins kenn ich nicht (bin aber auch nicht tief in nHibernate drin).
partial funktioniert hier jedenfalls so nicht.

F
183 Beiträge seit 2009
vor 10 Jahren

So wie Du das willst, sehe ich leider keine Möglichkeit. Aber Du könntest darüber nachdenken, Kundenspezifische Felderweiterungen als Generalisierung zu sehen. Dann bräuchtest Du eine Dll, in der du die Domänenobjekte für einen Kunden spezialisierst und könntest dann für diese Domänenklassen auch in Hibernate ein eigenes Mapping erstellen. Es würde sich dann anbieten, jede Implementation deines Domänenobjekts auf eine eigene Tabelle zu mappen. Also so sollte das möglich sein.

Ob diese Abbildung sinn macht, weiss ich nicht, da ich dein Modell nicht kenne.

VG

849 Beiträge seit 2006
vor 10 Jahren

Hallo je nachdem was Du vorhast könnte man auch attribute Tabellen anlegen.

Wenn Du z.b. eine Tabelle Person mit Id, Name, Vorname hast, könntest Du eine Tabelle Person_Attributes Anlegen die per ForeignKey auf die Id der Person verweist und die Spalten Id, AttributeName und Value hat. So kann man der Person z.b. ein Hobby anhängen oder auch eine Kreditkarten nummer.. Je nachdem was der Kunde sich so vorstellt.

3.511 Beiträge seit 2005
vor 10 Jahren

Hallo,

du kannst in NHibernate Dictionaries mappen. D.h. du legst dir in eine Config ab, was es an zusätzlichen Spalten gibt, und diese berücksichtigst du wiederum im Mapping (Vorrausgesetzt du nutzt ClassMapping<T>). Bei HBM Mapping wird es wesentlich schwieriger.

Und das Ganze wie unconnected geschrieben hat, in eine separate Tabelle legen.

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)