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
-~----------~----~----~----~------~----~------~--~---

Reply via email to