Could anyone please suggest? Am I doing it the right way?
2009/8/4 Dmitiry Nagirnyak <dna...@gmail.com> > 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 <dna...@gmail.com> > > 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 <fabioma...@gmail.com> >> >> 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 <dna...@gmail.com> >>> >>>> Anybody please? >>>> >>>> 2009/8/3 Dmitiry Nagirnyak <dna...@gmail.com> >>>> >>>> Noo! Tell me that's impossible! >>>>> >>>>> http://nhjira.koah.net/browse/NH-1262 >>>>> :(( >>>>> >>>>> On 03/08/2009, Dmitiry Nagirnyak <dna...@gmail.com> 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 <tehl...@gmail.com> >>>>> > >>>>> >> 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 >>>>> >> <dna...@gmail.com>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 >>> >>> >>> >>> >> > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to nhusers@googlegroups.com To unsubscribe from this group, send email to nhusers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/nhusers?hl=en -~----------~----~----~----~------~----~------~--~---