Cool thanks Fabio I gathered this much, do you know what changed that breaks this? Just out of curiosity really.
Cheers Stefan On Fri, Oct 30, 2009 at 3:49 PM, Fabio Maulo <[email protected]> wrote: > yes, you should use Load instead a new obj with only id. > > 2009/10/29 Stefan Sedich <[email protected]> > > Just curious about the below: >> >> I have the below mappings: >> >> >> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Common" >> assembly="Common"> >> <class name="Arm" table="Arms"> >> <id name="Id" column="Id"> >> <generator class="assigned" /> >> </id> >> <property name="Desc" type="String" not-null="true" /> >> </class> >> </hibernate-mapping> >> >> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Common" >> assembly="Common"> >> <class name="Person" table="People"> >> <id name="Id" column="Id"> >> <generator class="assigned" /> >> </id> >> <property name="Name" type="String" not-null="true" /> >> <many-to-one name="Arm" column="ArmId" /> >> </class> >> </hibernate-mapping> >> >> >> I run the following with NH 1.2 and get: >> >> var arm = new Arm() {Id = 123}; >> var person = new Person() {Id = 1, Name = "Bob", Arm = arm}; >> >> Session.Save(person); >> Session.Flush(); >> >> >> RESULT: NHibernate: INSERT INTO People (Name, ArmId, Id) VALUES (@p0, @p1, >> @p2); @p0 = 'Bob', @p1 = '123', @p2 = '1' >> >> >> >> Running with NH 2.1: >> >> >> NHibernate: SELECT arm_.Id, arm_.Desc as Desc0_ FROM Arms arm_ WHERE >> arm_....@p0;@p0 >> = 123 >> >> NHibernate: INSERT INTO People (Name, ArmId, Id) VALUES (@p0, @p1, @p2);@p0 >> = 'Bob', @p1 = NULL, @p2 = 1 >> NHibernate: UPDATE People SET Name = @p0, ArmId = @p1 WHERE Id = @p2;@p0 >> = 'Bob', @p1 = 123, @p2 = 1 >> >> >> Now with NH 2.1 it selects the arm back and as it is null it sets the >> armid to null, but with NH 1.2 it updates with the ID in my transient >> object. >> Now what I want to understand is what the difference is, mostly the issue >> is trying to convert and old NH 1.2 app to 2.1 and having simmilar issues. >> >> I am aware that if in 2.1 if I use: >> >> var arm = Session.Load<Arm>(123); >> var person = new Person() { Id = 1, Name = "Bob", Arm = arm }; >> >> >> Then it does as I expect, is it a case I need to use the above to do what >> I need? >> >> >> >> Cheers >> Stefan >> >> >> > > > -- > Fabio Maulo > > > > -- Stefan Sedich Software Developer http://weblogs.asp.net/stefansedich --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
