2009-04-29 6 views
4

In Fluent NHibernate gibt References() ein Objekt zurück, das die ReadOnly() -Methode nicht unterstützt.Warum kann ich ReadOnly nicht auf ein Fluent NHibernate References() - Mapping setzen?

Ich versuche, diese Art der Zuordnung zu erstellen (dh eine, wo ein Update nicht auf die genannten Artikel propagiert wird):

<many-to-one update="false" insert="false" 
name="DestinationSheet" column="DestinationSheetNumber" /> 

Auf normalen (Karte()) Mappings können diese beiden Attribute sein set mit ReadOnly().

Ich mag so etwas zu tun:

References(x => x.DestinationSheet). 
     ColumnName("DestinationSheetNumber").ReadOnly(); 

ich das Update manuell hinzufügen und Insert Attribute SetAttributes() verwendet, und das funktioniert gut, aber ich bin besorgt darüber, dass die Tatsache, dass Readonly() ist nicht vorhanden auf Referenzen() ist ein Hinweis, dass ich nicht versuchen sollte, dies zu tun.

Weiß jemand, warum ReadOnly() in diesem Kontext nicht verfügbar ist?

Antwort

5

Es ist einfach noch nicht implementiert. Im Laufe der Zeit werden wir alle Funktionen von NHibernate unterstützen, aber bis dahin ist die SetAttribute-Methode da, damit Sie fortfahren können.

Nebenbei akzeptieren wir Patches!

+0

Es gibt bereits ein offenes Problem dafür: http://code.google.com/p/fluent-nhibernate/issues/detail?id=203 –

+0

Danke - Ich wollte einen Patch schreiben, aber ich sehe ich Bin schon mal dran ... –

+0

Für Leute, die nicht wissen, wie man den Patch anwendet, wie wendet man den Patch an? –

0

Referenzen erstellt eine Viele-zu-Eins-Zuordnung und according to the documentation, schreibgeschützt wird nicht auf dieser Zuordnung unterstützt. Dein Ansatz, update zu setzen und in falsche Sounds einzufügen, stimmt zu mir. AFAIK, das Fluent-NHibernate-Projekt, plant, alle Zuordnungsfunktionen von NHibernate zu unterstützen, aber bis dahin müssen Sie SetAttributes verwenden.

+0

Dank für diese - auf den Objekten, wo Fluent Nh bereits Readonly (zB Map()) nicht implementiert, tut sie dies nur durch den Einsatz einstellen und löschen Attribute - die sich auf dem von Ihnen angegebenen Dokument befinden. Ich fange an zu denken, dass dies nur eine Unterlassung von Fluent ist. –

+0

Und ich habe gerade gemerkt, dass mein Mapping-XML es nicht in den ursprünglichen Post geschafft hat, was es ziemlich schwierig machte, zu folgen, Entschuldigung. –

0

Umsetzung der Antwort von James Gregory vorgesehen ist

References(x => x.Store).TheColumnNameIs("StoreId").SetAttribute("update","false");