NH Version: 2.1.2.4000 and 2.1.0.4000 - Tested with both proxy-validator = true;
protected virtual void IncrementAmount - Don't work - Tested with reflection (That's why I want to use protected internal) protected internal virtual void IncrementAmount - Don't work On 29 jan, 16:43, Fabio Maulo <[email protected]> wrote: > version of NH ? > and put this > protected virtual void IncrementAmount > > The method should be virtual to be intercepted and the proxy-validator > should be on > > 2010/1/29 CassioT <[email protected]> > > > > > > > Hi Fabio. I haven't seen anything in logs that could help me. > > > I uploaded a tiny project to > >http://rapidshare.com/files/343029697/SimpleNH.zip.html > > where you can see what is happening. > > > I didn't send the libraries because I think you already have it. lol > > > Thanks > > > On 29 jan, 11:11, Fabio Maulo <[email protected]> wrote: > > > sorry I mean > > > protected virtual void IncrementAmount( > > > > 2010/1/29 Fabio Maulo <[email protected]> > > > > > version of NH ? > > > > btw try to activate the WARN log-level and read the log file. > > > > > protected void IncrementAmount( > > > > > 2010/1/29 CassioT <[email protected]> > > > > > But protected internal should work. Do you agree? Or does it work and > > > >> I am doing something wrong? > > > > >> On 29 jan, 06:50, "Richard Brown \(gmail\)" <[email protected]> > > > >> wrote: > > > >> > If a method/property is marked as protected, than the NH proxy > > should be > > > >> > able to intercept access. If there's any access to non-protected > > > >> > private/internal members from outside the class, then the proxy is > > > >> powerless > > > >> > to intercept. > > >http://broloco.blogspot.com/2008/01/nhibernate-identity-map-and-proxi. > > > >> .. > > > > >> > -------------------------------------------------- > > > >> > From: "CassioT" <[email protected]> > > > >> > Sent: Thursday, January 28, 2010 5:34 PM > > > >> > To: "nhusers" <[email protected]> > > > >> > Subject: [nhusers] Re: Proxy and property modification > > > > >> > > Hi Richard, > > > > >> > > Now I think I found the problem. I have a function IncrementAmount > > > >> > > (decimal value). This function was protected internal and changing > > it > > > >> > > to public it will work, even if the property Amount is private > > set. > > > > >> > > So I think that the problem has relation to the Internal > > restriction. > > > >> > > I don't know why since the function is marked as protected > > internal > > > >> > > and not only as internal. To give you a clear look I'll write a > > > >> > > similar code here: > > > > >> > > public class Foo > > > >> > > { > > > >> > > public virtual decimal Amount { get; private set; } > > > > >> > > protected internal void IncrementAmount(decimal value) > > > >> > > { > > > >> > > this.Amount += value; > > > >> > > } > > > >> > > } > > > > >> > > public class Bar > > > >> > > { > > > >> > > public Foo Foo = new Foo(); > > > >> > > } > > > > >> > > Bar mapping: > > > >> > > <many-to-one name="Foo" column="Foo_Id" class="Foo" > > not-null="true" / > > > > >> > > var bar = s.Get<Bar>(10); > > > >> > > bar.Foo.IncrementAmount(1); > > > > >> > > TESTS RESULTS FOR THE ABOVE CODE: > > > > >> > > Modifying the property: > > > > >> > > protected internal void IncrementAmount(decimal value); > > > > >> > > public virtual decimal Amount { get; private set; } // NOT OK > > > >> > > public virtual decimal Amount { get; protected set; } // NOT OK > > > >> > > public virtual decimal Amount { get; set; } // OK > > > > >> > > Modifying the function: > > > > >> > > public void IncrementAmount(decimal value); > > > > >> > > public virtual decimal Amount { get; private set; } // OK > > > >> > > public virtual decimal Amount { get; protected set; } // OK > > > >> > > public virtual decimal Amount { get; set; } // OK > > > > >> > > Modifying the mapping: > > > > >> > > <many-to-one name="Foo" column="Foo_Id" class="Foo" > > not-null="true" > > > >> > > fetch="join" /> // ALWAYS OK - Even with internal > > > > >> > > So yes, I think this behavior has relation with the internal > > > >> > > restriction. What do you think? > > > > >> > > Thanks > > > > >> > > On 28 jan, 06:48, "Richard Brown \(gmail\)" < > > [email protected]> > > > >> > > wrote: > > > >> > >> I think we need to see the code that modifies the Amount > > property. > > > > >> > >> If the property is protected, it has to be inside a method of the > > > >> class > > > >> > >> (or > > > >> > >> one of its subclasses). > > > > >> > >> -------------------------------------------------- > > > >> > >> From: "CassioT" <[email protected]> > > > >> > >> Sent: Thursday, January 28, 2010 5:04 AM > > > >> > >> To: "nhusers" <[email protected]> > > > >> > >> Subject: [nhusers] Re: Proxy and property modification > > > > >> > >> > Hi Richard, > > > > >> > >> > Like I said, take: > > > > >> > >> > public virtual decimal Amount { get; protected set; } > > > > >> > >> > Anything that I try to put in Amount is denied. If Amount == 0 > > and > > > >> I > > > >> > >> > try something like Amount = 5, Amount will not be modified. > > > > >> > >> > But like I said before, without the protected restriction or > > using > > > >> > >> > fetch="join" (many-to-one association) it works > > > > >> > >> > I tested the same code with pure classes (No NHibernate > > > >> interaction), > > > >> > >> > just to see if it was a .NET problem, and of course, it worked. > > > > >> > >> > Thanks > > > > >> > >> > On Jan 27, 8:19 pm, "Richard Brown \(gmail\)" > > > >> > >> > <[email protected]> wrote: > > > >> > >> >> Hi, > > > > >> > >> >> Can you show the code that modifies the object? (accesses the > > > >> > >> >> mutator) > > > > >> > >> >> Thanks, > > > >> > >> >> Richard > > > > >> > >> >> -------------------------------------------------- > > > >> > >> >> From: "CassioT" <[email protected]> > > > >> > >> >> Sent: Wednesday, January 27, 2010 7:38 PM > > > >> > >> >> To: "nhusers" <[email protected]> > > > >> > >> >> Subject: [nhusers] Proxy and property modification > > > > >> > >> >> > Hi all. > > > > >> > >> >> > I have an entity that has a property that is defined like > > this: > > > > >> > >> >> > public virtual decimal Amount { get; protected set; } > > > > >> > >> >> > I don't know why but I can't modify it. The value never > > change. > > > > >> > >> >> > I found two ways to fix it. > > > > >> > >> >> > 1) Don't use the proxy version (fetch="join") - Never mind > > > >> > >> >> > 2) Remove the protected restriction > > > > >> > >> >> > Am I doing something wrong or do I have any other > > alternative? > > > > >> > >> >> > I tried to access="field" too. > > > > >> > >> >> > Thanks > > > > >> > >> >> > -- > > > >> > >> >> > 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]<nhusers%[email protected] > > > >> > >> >> > > > > <nhusers%[email protected]<nhusers%252bunsubscr...@googlegroup > > s.com>> > > > >> . > > > >> > >> >> > For more options, visit this group at > > > >> > >> >> >http://groups.google.com/group/nhusers?hl=en. > > > > >> > >> > -- > > > >> > >> > 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]<nhusers%[email protected] > > > >> > >> > > > > <nhusers%[email protected]<nhusers%252bunsubscr...@googlegroup > > s.com>> > > > >> . > > > >> > >> > For more options, visit this group at > > > >> > >> >http://groups.google.com/group/nhusers?hl=en. > > > > >> > > -- > > > >> > > 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]<nhusers%[email protected] > > > >> > > > > > <nhusers%[email protected]<nhusers%252bunsubscr...@googlegroup > > s.com>> > > > >> . > > > >> > > For more options, visit this group at > > > >> > >http://groups.google.com/group/nhusers?hl=en. > > > > >> -- > > > >> 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]<nhusers%[email protected] > > > >> > > > <nhusers%[email protected]<nhusers%252bunsubscr...@googlegroup > > s.com>> > > > >> . > > > >> For more options, visit this group at > > > >>http://groups.google.com/group/nhusers?hl=en. > > > > > -- > > > > 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]<nhusers%[email protected] > > > > > . > > For more options, visit this group at > >http://groups.google.com/group/nhusers?hl=en. > > -- > 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.
