2016-04-13 7 views
0

Ich habe ein riesiges Objekt, es hat eine Menge von lazy ladbare Eigenschaften.Haben NHibernate nicht die Eigenschaften ignoriert?

Ich möchte eine schnelle Bearbeitung einer sehr kleinen Teilmenge seiner Eigenschaft aktivieren. Wie kann ich, wenn ich nur ein paar Werte habe, NHibernate sagen: nichts anderes berühren?

Weil jetzt, wenn ich speichere, alles nicht gesetzt geht verloren.

Antwort

1

Haben Sie versucht, dynamic-update Option auf Ihre Klassenzuordnung?

Aber prüfen Sie, ob der Flush nicht die unbelasteten faulen Eigenschaften zuerst laden lässt, nur für den Fall.

In Ihrer Frage geben Sie an, dass Sie andere Eigenschaften verlieren. Ich habe noch nie ein solches Verhalten erlebt. Hängen Sie (unter Verwendung von ISession.Update oder ISession.Merge) ein losgelöstes Element in Ihrem aktuellen Code an?
Was ich vorschlagen möchte, wird in einem solchen Fall nicht funktionieren. Es sollte stattdessen mit einer Entität arbeiten, die aus dem aktuellen ISession geladen wurde, einige Eigenschaften berührt und dann in db nur unter Verwendung von ISession.Flush (oder vorzugsweise ITransaction.Commit) gespeichert, da es keine gute Praxis ist, ohne Transaktionen zu arbeiten.

Verwandte Themen