Can't find how to do this (especially with FNH) :( Probably I need a component but stored in a separate table (BinaryContent with Id)?
2009/8/4 Fabio Maulo <[email protected]> > Do you have tried a <component> in a <join>. > > > 2009/8/4 Dmitiry Nagirnyak <[email protected]> > >> Could anyone please suggest? >> >> Am I doing it the right way? >> >> >> 2009/8/4 Dmitiry Nagirnyak <[email protected]> >> >>> Only one thing I can do NOW to pass the test is modify the Product class: >>> 1) Make Image setter non-public. >>> 2) Change image via method. That will: >>> 3) Retrieve the Session (via ServiceLocator). >>> 4) Delete old Image. >>> 5) Assign the new Image. >>> >>> Is it the only way of oding it? >>> Is it really impossible to do handle this via mapping? >>> >>> >>> Cheers, >>> Dmitriy. >>> 2009/8/4 Dmitiry Nagirnyak <[email protected]> >>> >>> Yes, BinaryContent can be used in other relations too. >>>> >>>> I don't mind to change the mapping to one-to-one, but it doesn't look >>>> like it solves this problem. >>>> I see what you mean about the cascade. >>>> >>>> When I was using other O/R-M I just set the relation type to Composition >>>> (not just Aggreagation) and it was working great. >>>> I am not sure how I can achive the same with NH. >>>> >>>> Should I use some hack or similar to make my test pass? >>>> >>>> Cheers, >>>> Dmitriy. >>>> >>>> 2009/8/4 Fabio Maulo <[email protected]> >>>> >>>> Try to think about this... What mean "cascade" ? >>>>> >>>>> Cascade mean that the action applied to the relation owner is applied >>>>> to the other side of the relation. >>>>> So: >>>>> - if you save a Product NH will save the Image >>>>> - if you delete a Product NH will delete the Image >>>>> and so on. >>>>> >>>>> The issue NH-1262 perhaps can be implemented because the one-to-one is >>>>> a bidirectional relation but your case is completely different. >>>>> Your relation is Product-to-BinaryContent and BinaryContent has a >>>>> different autonomy lify-cycle. >>>>> >>>>> Is the class BinaryContent used in some other relation with other >>>>> classes ? >>>>> >>>>> 2009/8/3 Dmitiry Nagirnyak <[email protected]> >>>>> >>>>>> Anybody please? >>>>>> >>>>>> 2009/8/3 Dmitiry Nagirnyak <[email protected]> >>>>>> >>>>>> Noo! Tell me that's impossible! >>>>>>> >>>>>>> http://nhjira.koah.net/browse/NH-1262 >>>>>>> :(( >>>>>>> >>>>>>> On 03/08/2009, Dmitiry Nagirnyak <[email protected]> wrote: >>>>>>> > It is not applicable to many-to-one. So it just doesn't work. >>>>>>> > It would be nice if I could do this. >>>>>>> > >>>>>>> > 2009/8/3 Tuna Toksoz <[email protected]> >>>>>>> > >>>>>>> >> all-delete-orhpans >>>>>>> >> >>>>>>> >> Tuna Toksöz >>>>>>> >> Eternal sunshine of the open source mind. >>>>>>> >> >>>>>>> >> http://devlicio.us/blogs/tuna_toksoz >>>>>>> >> http://tunatoksoz.com >>>>>>> >> http://twitter.com/tehlike >>>>>>> >> >>>>>>> >> >>>>>>> >> >>>>>>> >> >>>>>>> >> >>>>>>> >> On Mon, Aug 3, 2009 at 9:38 AM, Dmitiry Nagirnyak >>>>>>> >> <[email protected]>wrote: >>>>>>> >> >>>>>>> >>> Hi, >>>>>>> >>> >>>>>>> >>> I have difficulty making the test below to pass. I need to tell >>>>>>> NH that >>>>>>> >>> there's only 1 Image related to Product and if another is >>>>>>> assigned the >>>>>>> >>> old >>>>>>> >>> one should be deleted. >>>>>>> >>> >>>>>>> >>> Some help please? >>>>>>> >>> >>>>>>> >>> // THE TEST >>>>>>> >>> [Test] >>>>>>> >>> public void ReplaceProductImage_DeletesOldRecord() { >>>>>>> >>> // Initialise >>>>>>> >>> var p = new Product { >>>>>>> >>> Image = new BinaryContent { >>>>>>> >>> Content = Encoding.ASCII.GetBytes("image") >>>>>>> >>> } >>>>>>> >>> }; >>>>>>> >>> Session.Save(p); >>>>>>> >>> Session.Flush(); >>>>>>> >>> // Exercise >>>>>>> >>> var totalImagesBefore = Session.Linq<BinaryContent>().Count(); >>>>>>> >>> p.Image = new BinaryContent { >>>>>>> >>> Content = Encoding.ASCII.GetBytes("another") >>>>>>> >>> }; >>>>>>> >>> Session.Flush(); >>>>>>> >>> var totalImagesAfter = Session.Linq<BinaryContent>().Count(); >>>>>>> >>> // Verify >>>>>>> >>> totalImagesAfter.Should().Be.EqualTo(totalImagesBefore); >>>>>>> >>> } >>>>>>> >>> >>>>>>> >>> >>>>>>> >>> // THE MODEL >>>>>>> >>> public class Product { >>>>>>> >>> public virtual int Id { get; protected set; } >>>>>>> >>> public virtual BinaryContent Image { get; set; } >>>>>>> >>> } >>>>>>> >>> public class BinaryContent { >>>>>>> >>> public virtual int Id { get; protected set; } >>>>>>> >>> public virtual byte[] Content { get; set; } >>>>>>> >>> } >>>>>>> >>> // THE MAPPING >>>>>>> >>> public class BinaryContentMap : ClassMap<BinaryContent> { >>>>>>> >>> public BinaryContentMap() { >>>>>>> >>> Id(x => x.Id).GeneratedBy.Native(); >>>>>>> >>> Map(x => >>>>>>> x.Content).CustomTypeIs("BinaryBlob").WithLengthOf(102400); >>>>>>> >>> } >>>>>>> >>> } >>>>>>> >>> >>>>>>> >>> >>>>>>> >>> >>>>>>> >>> Cheers, >>>>>>> >>> Dmitriy. >>>>>>> >>> >>>>>>> >>> >>>>>>> >>> >>>>>>> >> >>>>>>> >> >> >>>>>>> >> >>>>>>> > >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Fabio Maulo >>>>> >>>>> >>>>> >>> >> >> >> >> > > > -- > Fabio Maulo > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
