you may be right about that one..."Fluently For the Fall"? Oh well, at least the timing is good with the coming release and all.
On Aug 2, 3:50 pm, Paul Batum <[email protected]> wrote: > How about "Autumn of Fluent NHibernate". The other title could be > misunderstood... :) > > On Mon, Aug 3, 2009 at 7:48 AM, Berryl Hesh <[email protected]> wrote: > > > Hi Steve. > > > How about the "Fall of Fluent NHibernate" for your next major video > > production? Kind of just rolls off the tongue, doesn't it?? > > > Seriously, good to see you having a hard look at FNH! > > > Berryl > > > On Aug 1, 9:00 am, sbohlen <[email protected]> wrote: > > > James: > > > > I get it now (I must be a little thick, I guess). You're suggesting > > > to use a private auto-property as a 'stand-in' for the 'role' of a > > > field and then map directly to the private autoproperty using FNH...? > > > > Yes, I do think this approach would work; it just requires a sort of > > > mental shift (on my part) about the use of properties; in this > > > approach where I would (usually) use a private field, I should instead > > > use a private autoproperty. Makes sense, and the (slight) overhead of > > > accessing the private autoproperty vs a private field in my object > > > model should be near-completely imperceptible (unless doing something > > > inane like accessing it 1M times in a tight loop <g>). > > > > Thanks for the info on 'Reveal'; that was very helpful. The 'nested- > > > class' approach delineated in that section of the wiki is basically > > > accomplishing the same thing as I was hinting at in my prior post > > > using code-gen techniques at compile-time to create strongly-typed > > > field-wrapping-properties for persisted entities; the code-gen > > > approach typically involves declaring the 'hand-written class' and the > > > 'code-generated class' using the 'partial' keyword and the nested > > > class is code-gen-ed by the template and merged into the 'hand- > > > written' class at compile-time. You don't get design-time > > > intellisense support for mapping statements until *after* a first > > > compile (to fire off the template), but you also needn't maintain > > > these nested classes by hand either. > > > > Obviously there are pros and cons to all of these strategies, but they > > > all accomplish somewhat the same thing: (semi-) automatic strongly- > > > typed access to private fields in persisted classes in lambda > > > expressions. > > > > I completely agree that in my case FNH may very well not suit my > > > 'typical' implementation pattern for some of the ways that I prefer to > > > use NH and I'm not so much suggesting that it change in any way to > > > meet my needs but am more just trying to explore the relative pros and > > > cons of how well (or not) it aligns with my usual usage patterns, of > > > course. > > > > Thanks for all the info and I will continue to explore all of this in > > > greater detail. > > > > -Steve B. > > > > On Aug 1, 8:22 am, James Gregory <[email protected]> wrote: > > > > > > Since my usual architectural approach to using NH typically involves > > mapping > > > > > fields rather than properties (auto or not), obviously none of my > > properties > > > > > *can* be auto-properties since auto-properties (sadly) don't have > > > > > predicatably-named backing stores that I could map to using > > 'traditional' > > > > > non-FNH approaches (e.g., XML). > > > > > You sure about that? If FNH can do it, NH can do it... AFAIK you just > > map a > > > > private autoproperty the same as a regular public property, no need to > > > > specify any access strategy. > > > > > You can find info about Reveal at the bottom of this wiki > > > > page< > >http://wiki.fluentnhibernate.org/show/StandardMappingPrivateProperties> > > > > . > > > > > The fact is, fluent isn't going to fit with everybody's style; I > > wouldn't > > > > expect anyone to change their design to use FNH, just as I wouldn't > > expect > > > > anyone to change to use NH. If your design is compatible, then that's > > where > > > > FNH can be of use, if it isn't then there's not much use trying to mash > > one > > > > into the other. > > > > > Fields will be supported, but there's always going to be some > > compromise > > > > around inaccessible ones. > > > > > On Sat, Aug 1, 2009 at 12:41 PM, sbohlen <[email protected]> wrote: > > > > > > Paul: > > > > > > Good points -- I may be inadvertently conflating PUBLIC > > autoproperties > > > > > with PRIVATE autoproperties (and also PROPERTIES with AUTOPROPERTIES) > > > > > here. Honestly it never occured to me to have private properties > > > > > (again, auto or not) on my objects even though there's clearly no > > > > > compiler-rule that says I can't so I think when I read 'property' in > > > > > the above thread my mind immediately just inferred 'public' > > > > > accessibility for them. > > > > > > Since my usual architectural approach to using NH typically involves > > > > > mapping fields rather than properties (auto or not), obviously none > > of > > > > > my properties *can* be auto-properties since auto-properties (sadly) > > > > > don't have predicatably-named backing stores that I could map to > > using > > > > > 'traditional' non-FNH approaches (e.g., XML). > > > > > > Given James' reply, I can see TWO issues that would seemingly need to > > > > > be overcome here: one being that everything would of course need to > > > > > have an option to be expressed in terms of FieldInfo rather than > > > > > PropertyInfo, and the other being how do you get the > > lamba-reflection- > > > > > trick to work against private members. The FieldInfo v PropertyInfo > > > > > issue is straightforward, but can you point me to a reference (blog > > > > > post, whatever) that demonstrates what mapping to a private property > > > > > would look like (using this 'Reveal' option) --? I would like to > > > > > explore what this looks like as a semi-viable alternative to having > > to > > > > > expose all data-bound values in my objects as public properties even > > > > > though I agree with James' post that this renders much of the benefit > > > > > of FNH impotent. > > > > > > Unfortunately, the only non-string-dependent way that I am aware of > > to > > > > > access private members via anything similar to the lamda-reflection- > > > > > hack is to do code-gen to create a parallel class hierarchy, each > > > > > parallel class full of properties that correlate exactly to both the > > > > > public and private members of your objects so that you can express > > the > > > > > private members in lamba statements. This is obviously significantly > > > > > less than idea b/c you're just moving the responsibility for keeping > > > > > things 'logically consistent' from string-literals to whatever your > > > > > code-gen executable is, but I have seen this approach generally work > > > > > leveraging the somewhat flakey integration of VS and the T4 > > templating > > > > > engine. Obviously this approach is counter to (or at least different > > > > > from) what you're trying to accomplish with FNH, but I have seen it > > > > > work. > > > > > > Thanks again for the suggestions; in the end it may just be that the > > > > > overall architectural approach that FNH is taking (using the lamda- > > > > > reflection-hack to avoid string-literals) is simply incompatible with > > > > > my general approach of mapping to private fields in objects (square > > > > > peg, meet round hole <g>). > > > > > > -Steve B. > > > > > > On Jul 31, 8:27 pm, Paul Batum <[email protected]> wrote: > > > > > > Stephen, > > > > > > > I'd just like to point out that private auto properties > > > > > > > a) Cannot have any logic in getters and setters > > > > > > b) Do not appear in the public interface of your domain objects. > > > > > > > i.e. Neither of your objections apply when replacing your private > > fields > > > > > > with private auto properties. > > > > > > > Of course, to map to those private autoproperties you need to > > either give > > > > > up > > > > > > some compile time safety (by using Reveal as James mentioned, or > > mapping > > > > > to > > > > > > a public property and then using an access modifier), or sacrifice > > > > > "domain > > > > > > purity" and nest your mappings inside your entities. > > > > > > > Paul Batum > > > > > > > On Sat, Aug 1, 2009 at 3:13 AM, James Gregory < > > [email protected] > > > > > >wrote: > > > > > > > > We do have full intention of supporting as much of fields as we > > can, > > > > > but > > > > > > > it's not a high priority right now (getting the release out with > > what > > > > > > > everyone's already been using for the past year is). There's > > always > > > > > going to > > > > > > > be trouble around private fields that don't have a public getter, > > > > > because we > > > > > > > can't access them via a lambda, but we can always provide string > > based > > > > > > > alternatives (however much that undoes one of the key strengths > > of > > > > > FNH); for > > > > > > > example the Reveal functionality does allow you to use private > > > > > properties > > > > > > > currently, if you're willing to use strings. > > > > > > > > The whole issue is that our entire public interface is based on > > > > > > > PropertyInfo, it has been from day one. I don't think much > > > > > consideration was > > > > > > > given to fields in the beginning and as such they've kind-of > > fallen to > > > > > the > > > > > > > wayside. It's clear what we have to do (replace all instances of > > > > > PropertyInfo with some higher-level abstraction that could be a > > PropertyInfo > > > > > or FieldInfo (or MethodInfo!) under the hood), it's just a matter of > > getting > > > > > the time and resources to do it. > > > > > > > > There isn't any voting happening because we're already decided > > that we > > > > > will > > > > > > > support fields, we were a long time ago :) > > > > > > > > As always, patches are welcome ;) > > > > > > > > On Fri, Jul 31, 2009 at 4:30 PM, sbohlen <[email protected]> > > wrote: > > > > > > > >> Just FYI for some perspective, many people (like me!) prefer > > field > > > > > > >> mappings to property mappings for at > > ... > > read more » --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Fluent NHibernate" 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/fluent-nhibernate?hl=en -~----------~----~----~----~------~----~------~--~---
