Frage

Ich habe eine Situation, wo ich Tabellen haben, die viele Spalten haben als Verbundprimärschlüssel verwendet,

schlechte Geschäftslogik erfordert diese wandelbar zu sein.

Ich bin mit nhibernate und haben keine Probleme bei der Abbildung für loadig / speichern diese. Allerdings muss ich die Eigenschaftswerte zu können und diese Änderungen in der DB widerspiegeln müssen aktualisiert werden, wenn i-Update aufrufen.

Dies ist ein Legacy-System, so dass keine ändert sich der DB-Struktur (seine schrecklich).

Gibt es etwas, das ich mit nhibernate tun kann, um dieses Problem zu lösen? hat nhibernate erlauben sogar seine Schlüssel geändert werden.

Ich verwende: .net4.0, nhibernate 2.1, fluentnh 1.0 und SQL Server als Backend.

War es hilfreich?

Lösung

Sie können nicht die PK mit NHibernate ändern. Wie Sie bereits herausgefunden haben, mit der Struktur, die Sie zu tun ist nur schrecklich.

Was können Sie tun, ist die Verwendung von SQL-Abfragen der PK zu ändern. Denken Sie daran, Sie werden die Einheit mit der neuen ID neu zu laden, bevor Sie es erneut.

Andere Tipps

Eigentlich verpflichtet, Sie sind nicht das Datenbankschema abzubilden, wie sie ist zu einem Domäne-Objekt.

Ich habe eine Anwendung, die eine eine Objektstruktur hat, die nicht wirklich mit NHibernate Verständnis der Semantik in der Datenbank dargestellt werden: es würde eine 3-Säule Composite-ID erfordern, aber der Haken ist, dass es Fälle gibt, dass zwei der Säulen erhalten geändert. Also habe ich eine einzelne Spalte-Eigenschaft als PK abgebildet und die Verwendung der beiden anderen automatisierten und bekam das Beste aus zwei Welten.

Beachten Sie, dass in diesen Fällen 2nd-Level-Caching ist eine große no-no!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top