I'm also having trouble getting field access working. If I have no setter for my list I get: ----> System.ArgumentException : Property set method not found.
My IHasManyConvention looks identical to your example below (I've also tried ReadOnlyPropertyThroughCamelCaseField). But, I have not tried the IAutoMappingOverride<>, and I can't see the point of it, my IList is mapped (works if there's a setter), it's just the access part that won't work. (I'd tried it if it was simple, but my configuration and testproject would get circular dependencies, I'm trying to work out how to use 100% automapping) /Peter From: fluent-nhibernate@googlegroups.com [mailto:fluent-nhibern...@googlegroups.com] On Behalf Of Paul Batum Sent: den 5 september 2009 05:38 To: fluent-nhibernate@googlegroups.com Subject: [fluent-nhib] Re: Automapping, protected, and problems with design Sergey, You do not have to use Reveal() for the cases you described. Say I have this entity: public class TestEntityA { public virtual int Id { get; set; } private readonly IList<TestEntityB> _children = new List<TestEntityB>(); public virtual IEnumerable<TestEntityB> Children { get { return _children; } } } I then map it: public class TestEntityAMap : IAutoMappingOverride<TestEntityA> { public void Override(AutoMapping<TestEntityA> mapping) { mapping.HasMany(x => x.Children); } } And use a convention to set all of these with the appropriate access modifier: public class HasManyAccessOverride : IHasManyConvention { public void Apply(IOneToManyCollectionInstance instance) { instance.Access.CamelCaseField(CamelCasePrefix.Underscore); } } In summary, use nhibernate's support for access modifiers to avoid using reveal. Paul Batum On Fri, Sep 4, 2009 at 11:17 PM, queen3 <sergey.prokhore...@gmail.com> wrote: I personally do not have major problems with private auto- properties.To me it is more helpful to have automatic discovery of private members of choice, whether those are fields or properties. Still, this is not a show-stopper and so I don't think I'm going to insist on this. The topic I wanted to discuss is more a philosophical/ design question, that with FNH the right way to go (with better entity design) is a bit harder than the worse one. On Sep 4, 4:03 pm, Stuart Childs <chil...@gmail.com> wrote: > >> like Map(Reveal.Property<MyEntity>("propertyName") - another complaint > >> is that it doesn't seem to look for fields, only properties). > > FluentNHibernate does not current support fields, at all. For more > info, see this thread:http://groups.google.com/group/fluent-nhibernate/browse_thread/thread ... > > If you wish to track the status of this issue, you can watch the > ticket created by Morten Maxild here:http://code.google.com/p/fluent-nhibernate/issues/detail?id=315 > > On Fri, Sep 4, 2009 at 7:12 AM, Mikael Henriksson<mik...@zoolutions.se> wrote: > > Personally I prefer the fluent mapping. It is so much easier to get up and > > running when working with an existing database schema or when there is a > > need to customize naming etc on tables. I honestly don't see the wickedness > > in auto mapping. :) > > > On Fri, Sep 4, 2009 at 2:03 PM, queen3 <sergey.prokhore...@gmail.com> wrote: > > >> Hm, something like IPropertyFinder would definitely be nice to have > >> for AutoMapping, so that I can for example tell to include members > >> named like "field" and don't touch purely internal ones like "_field", > >> and so on. This would make some of the issues above go away... except > >> for manual overrides where one still needs to use Reveal (this is a > >> way to include non-public properties in lambda expressions for FNH > >> like Map(Reveal.Property<MyEntity>("propertyName") - another complaint > >> is that it doesn't seem to look for fields, only properties). > > >> But how do you tell FNH/NHibernate to work with fields using > >> Conventions? > > >> By the way "virtual" is not AutoMapping but NH lazy-loading > >> requirement AFAIK. > > >> On Sep 4, 2:41 pm, playtime <playtime...@googlemail.com> wrote: > >> > I abandoned using the Automapper for similar reasons. > > >> > If your entities are dumb and look more like service DTOs, you can use > >> > the Automapper. > > >> > This and the requirement that everything be virtual/overridable makes > >> > the Automapper useless to me in it's current form. > > >> > You cannot have anything beyond simple length/format validation if you > >> > use setters which reduces domain entities to little more than service > >> > DTOs. > > >> > I always ensure nHibernate uses field access which is quite simple to > >> > do when you adhere to a field naming standard and use Conventions. > >> > [Using properties by default is the single most dumb thing about > >> > Hibernate that's been perpetuated in every related project but I'm > >> > sure that's been debated to death elsewhere.] > > >> > I also have no idea what Reveal does... *runs off to RTFM. > > >> > If the Fluent guys have time, I would like to see the Automapper's > >> > enitity finders constructor take a 'finder' class or 'criteria' class > >> > so that both schools of thought (and others I'm not familiar with) > >> > could be accomodated. > > >> > Of course, this only works for new projects anyway. It's back to > >> > mapping classes and full control when you're mapping to a legacy > >> > schema. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Fluent NHibernate" group. To post to this group, send email to fluent-nhibernate@googlegroups.com To unsubscribe from this group, send email to fluent-nhibernate+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/fluent-nhibernate?hl=en -~----------~----~----~----~------~----~------~--~---