Tim, That is a limitation of SQL, not NH. On Tue, Oct 21, 2008 at 6:58 PM, Tim Barcz <[EMAIL PROTECTED]> wrote:
> Setttling on the following: > > Unidirectional mapping cannot complete with two statements...must be > three....and have to have a nullable foreign-key field > > On Tue, Oct 21, 2008 at 11:36 AM, Tim Barcz <[EMAIL PROTECTED]> wrote: > >> But then it's bidirectional....I have it bidirectional right now but I >> don't want it bidirectional. >> >> >> On Tue, Oct 21, 2008 at 11:31 AM, Ayende Rahien <[EMAIL PROTECTED]>wrote: >> >>> You don't have the mapping mapped from the WishList side of things. >>> If you would, you would get what you expect. >>> >>> >>> On Tue, Oct 21, 2008 at 6:24 PM, Tim Barcz <[EMAIL PROTECTED]> wrote: >>> >>>> Tried putting the table in the user mapping (see below)...however that >>>> resulted in three calls being made (and I have to have a nullable foreign >>>> key) >>>> >>>> NHibernate: INSERT INTO Users (First, Last) VALUES (@p0, @p1); select >>>> SCOPE_IDENTITY(); @p0 = 'Tim', @p1 = 'Barcz' >>>> NHibernate: INSERT INTO WishLists (Name) VALUES (@p0); select >>>> SCOPE_IDENTITY(); @p0 = 'Sample' >>>> NHibernate: UPDATE WishLists SET UserId = @p0 WHERE WishListId = @p1; >>>> @p0 = '17', @p1 = '9' >>>> >>>> if I put in inverse="true" as Ayende suggest, I get two calls to DB >>>> >>>> NHibernate: INSERT INTO Users (First, Last) VALUES (@p0, @p1); select >>>> SCOPE_IDENTITY(); @p0 = 'Tim', @p1 = 'Barcz' >>>> NHibernate: INSERT INTO WishLists (Name) VALUES (@p0); select >>>> SCOPE_IDENTITY(); @p0 = 'Sample' >>>> >>>> But the data is now corrupted because the UserId was not added to the >>>> WishList >>>> >>>> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" >>>> namespace="NHWishList.Model" assembly="NHWishList"> >>>> <class name="User" table="Users"> >>>> <id name="UserId" column="UserId" type="Int32" >>>> unsaved-value="0"> >>>> <generator class="native" /> >>>> </id> >>>> <property name="First" column="First" length="50" >>>> not-null="true" /> >>>> <property name="Last" column="Last" length="50" not-null="true" >>>> /> >>>> >>>> <bag name="WishLists" cascade="all" table="WishLists"> >>>> <key column="UserId"/> >>>> <one-to-many class="WishList" /> >>>> </bag> >>>> </class> >>>> </hibernate-mapping> >>>> >>>> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" >>>> namespace="NHWishList.Model" assembly="NHWishList"> >>>> <class name="WishList" table="WishLists"> >>>> <id name="WishListId" column="WishListId" type="Int32" >>>> unsaved-value="0"> >>>> <generator class="native" /> >>>> </id> >>>> <property name="Name" column="Name" length="50" not-null="true" >>>> /> >>>> </class> >>>> </hibernate-mapping> >>>> >>>> On Tue, Oct 21, 2008 at 11:13 AM, Gabriel Schenker < >>>> [EMAIL PROTECTED]> wrote: >>>> >>>>> when working uni-directional you have to provide the table name of the >>>>> children (that is the WishList items) in the mapping... >>>>> And about DDD: in the DDD book of Evans he states that uni-directional >>>>> relations are preferable. That does not mean that under certain >>>>> circumstances there shouldn't be a bi-directional relation. As always "it >>>>> depends" >>>>> >>>>> >>>>> On Tue, Oct 21, 2008 at 6:04 PM, Tim Barcz <[EMAIL PROTECTED]> wrote: >>>>> >>>>>> I can make this work if this bidirectional....however I'm needing some >>>>>> guidance as to whether things should be bidirectional or not. Seems like >>>>>> the domain should dictate, however am not seeing it so simply. >>>>>> >>>>>> >>>>>> On Tue, Oct 21, 2008 at 10:57 AM, Tim Barcz <[EMAIL PROTECTED]>wrote: >>>>>> >>>>>>> Inverse=true give me two sql statements as expected, however it >>>>>>> doesn't include the userId, which leaves my UserId column null (and no >>>>>>> way >>>>>>> to get the wishlist back for the user). >>>>>>> >>>>>>> NHibernate: INSERT INTO Users (First, Last) VALUES (@p0, @p1); select >>>>>>> SCOPE_IDENTITY(); @p0 = 'Tim', @p1 = 'Barcz' >>>>>>> NHibernate: INSERT INTO WishLists (Name, UserId) VALUES (@p0, @p1); >>>>>>> select SCOPE_IDENTITY(); @p0 = 'Sample', @p1 = '' >>>>>>> >>>>>>> On Tue, Oct 21, 2008 at 10:47 AM, Ayende Rahien <[EMAIL >>>>>>> PROTECTED]>wrote: >>>>>>> >>>>>>>> You need to specify inverse=true >>>>>>>> >>>>>>>> >>>>>>>> On Tue, Oct 21, 2008 at 5:44 PM, Tim Barcz <[EMAIL PROTECTED]>wrote: >>>>>>>> >>>>>>>>> Ok that's well and good...so I've got unidirectional going >>>>>>>>> on....but am seeing strangeness >>>>>>>>> >>>>>>>>> NHibernate: INSERT INTO Users (First, Last) VALUES (@p0, @p1); >>>>>>>>> select SCOPE_IDENTITY(); @p0 = 'Tim', @p1 = 'Barcz' >>>>>>>>> NHibernate: INSERT INTO WishLists (Name, UserId) VALUES (@p0, @p1); >>>>>>>>> select SCOPE_IDENTITY(); @p0 = 'Sample', @p1 = '' >>>>>>>>> NHibernate: UPDATE WishLists SET UserId = @p0 WHERE WishListId = >>>>>>>>> @p1; @p0 = '8', @p1 = '1' >>>>>>>>> >>>>>>>>> Why does this have to be three calls? After the first call, the >>>>>>>>> second should have the ID from the first (the userId). The update >>>>>>>>> should be >>>>>>>>> unnecessary. >>>>>>>>> >>>>>>>>> Tim >>>>>>>>> >>>>>>>>> On Tue, Oct 21, 2008 at 1:40 AM, Gabriel Schenker < >>>>>>>>> [EMAIL PROTECTED]> wrote: >>>>>>>>> >>>>>>>>>> first of all to decrease complexity I would only use >>>>>>>>>> uni-directional relations in my domain model (even though in the >>>>>>>>>> database >>>>>>>>>> any relation is bi-directional) that is, a wishlist does not have to >>>>>>>>>> know >>>>>>>>>> any thing about a user or about its manager >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Mon, Oct 20, 2008 at 11:16 PM, Tim Barcz <[EMAIL PROTECTED]>wrote: >>>>>>>>>> >>>>>>>>>>> I have a user object and the user can have a number of wishlists. >>>>>>>>>>> >>>>>>>>>>> Instead of having methods on user (ie. User.AddWishlist, >>>>>>>>>>> User.RemoveWishlist), I have a WishListManager which has these >>>>>>>>>>> methods on >>>>>>>>>>> it. >>>>>>>>>>> >>>>>>>>>>> Persistent entities include, WishList and WishList item, which >>>>>>>>>>> relate back to the user through the WishListManager. >>>>>>>>>>> >>>>>>>>>>> How would I set up this mapping in NHibernate? Can someone point >>>>>>>>>>> me in the right direction? >>>>>>>>>>> >>>>>>>>>>> Tim >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>> >>>> >>>> >>> >>> >>> >> > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
