It was very easy to implement the PreLoad- and PostLoadEventListeners. It now works as I wanted.
On May 27, 10:52 am, David Perfors <[email protected]> wrote: > Using the state pattern won't fix the problem. And I find it quite > difficult to persist a state pattern. > > I couldn't find the example on nhforge, but I think I found another > possible solution... > I found an article that describes Audit Log using NHibernate Events. > Now I thought, are there Loading events? and looking in the source I > found the IPreLoad and IPostLoad, so I can implement those interfaces > and set an initialize property that I will check in the CheckState > method. > Are there any things I should think about? > > > If your real world case is more complex than your example (?), I would > > consider impl state pattern rather than your enum. > > > << giving the object an initialization state>> > > IIRC - I've seen some example at nhforge how to use a parameterized ctor, > > but if you want to keep your design, it's seems a lot easier mapping the > > fields instead. > > > -----Original Message----- > > From: [email protected] [mailto:[email protected]] On Behalf > > Of David Perfors > > Sent: den 26 maj 2009 16:28 > > To: nhusers > > Subject: [nhusers] Loading objects with readonly state > > > Hi, > > > In my application I want to do the following: > > public enum State > > { > > Writable, > > Readonly > > } > > > public class DomainObject > > { > > private string _name; > > public DomainObject() { } > > public int Id { get; private set; } > > public State State { get; set; } > > public string Name > > { > > get { return _name; } > > set > > { > > CheckState(); > > _name = value; > > } > > } > > private void CheckState() > > { > > if (State != Status.Bewerken) > > throw new NotSupportedException("You can't do this in > > readonly mode"); > > } > > } > > > So in almost every setter that I want to check I will do this check. > > I can save this object with the following mapping file: > > > <hibernate-mapping assembly="Domain" > > default-cascade="save-update" > > default-lazy="false" > > namespace="Domain" > > xmlns="urn:nhibernate-mapping-2.2"> > > <class name="DomainObject"> > > <id name="Id" type="int"> > > <generator class="sequence" /> > > </id> > > <property name="State" /> > > <property name="Name" /> > > </class> > > </hibernate-mapping> > > > But when I have saved the DomainObject with a Readonly state I can't > > load it correctly because the state will prevent this. > > Of course I can solve this by mapping it to the field instead of the > > property, but I was wondering whether it is possible to do it another > > way, for example giving the object an initialization state which will > > prevent the CheckState method from throwing the exception... > > > Any ideas? > > > David > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nhusers?hl=en -~----------~----~----~----~------~----~------~--~---
