I think I got it. I missed the entire concept of persisting the
property result as the end-game. I was expecting NHibernate.Linq to
translate some expression tree of my FullName property into a criteria
for me.

I finally understand the concept, yet I am bit bummed. Maybe there is
some futuristic alien race that has a library for my desired code-
witchery (or, I can get cracking on my own patch).

Disappointed but now back-on-board, I went ahead and mapped the above
property FullName (after adding an empty setter) accordingly with a
SetAttribute for "access" as "readonly".

Now, my updates to my FirstName and LastName are persisting to the
database the FullName column. Also, I am able to query that column in
the database.

Thanks again, Hudson. That was precisely what I needed!

On Jun 17, 8:59 am, Hudson Akridge <[email protected]> wrote:
> > It sounds like my virtual method needs to be mapped with a readonly
>
> accessor (?) so that it doesn't go out to via nhib in outgoing DDL,
>
> but can be interpreted by the HQL parser in selects. Am I on the right
>
> track?
>
> Yup, you're on the right track :) But it's the inbound nhib that you're
> looking to avoid (the rehydration part) Basically the ReadOnlyAccessor
> allows NHibernate to persist the value, but not retrieve it. However, that
> value is stored in the database, and thus, available for HQL queries, which
> is really just a DSL that sits on top of SQL.
>
> Think of it like this. If it's not available in SQL to write a query by
> hand, then it's not available for HQL. ReadOnlyAccessor gives you the
> optimization of saying that this property will only ever be queried on, so
> persist it into the DB, but the DB is not used to evaluate the value in the
> domain model.
>
>
>
> On Wed, Jun 17, 2009 at 8:55 AM, Kurt Johnson <[email protected]> wrote:
>
> > Thanks for the reply, Hudson.
>
> > I will take a look at the NHibernate docs and try and implement that.
> > It sounds like my virtual method needs to be mapped with a readonly
> > accessor (?) so that it doesn't go out to via nhib in outgoing DDL,
> > but can be interpreted by the HQL parser in selects. Am I on the right
> > track?
>
> > I was thinking that the conversion from Linq\POCO would occur first --
> > via an expression tree -- then, translated to HQL as the concatention
> > of the two fields.
>
> > So much to learn... and I love it.
>
> > Thanks again,
> > Kurt
>
> > On Jun 16, 2:12 pm, Hudson Akridge <[email protected]> wrote:
> > > Your question isn't specifically a fluent way that I'm aware of, you're
> > just
> > > looking for a way to map a model formula property to the database, for
> > > querying, but that doesn't get read out of the database (because again,
> > it's
> > > calculated in the model based on the other two properties). Is that
> > correct?
> > > In NHibernate, look at mapping the FullName property using a:
> > > access="NHibernate.Properties.ReadOnlyAccessor, NHibernate"
>
> > > Attribute. The ReadOnlyAccessor may be exactly what you want there.
>
> > > I don't have the source of fluent available to me right now, but I don't
> > > believe we currently support the ReadOnlyAccessor, so you might be stuck
> > > setting that manually with SetAttribute for now (although expect that
> > method
> > > to go away here soon in trunk), or you can just modify your version of
> > FNH
> > > to support that.
>
> > > On Tue, Jun 16, 2009 at 12:56 PM, kujotx <[email protected]> wrote:
>
> > > > I have a derived class that uses a method from a value object. My
> > > > value object has first, last names, so I added a concatenation for
> > > > full name and other variations for Find() criteria.
>
> > > > The abbreviated version is shown below. My goal is to be able to do
> > > > something like the following p => p.Person.FullName.Contains("John
> > > > Doe");
>
> > > > I am using Nhibernate.Linq and Linq.Specifications. I was trying to
> > > > write a specification that included the
>
> > > > That fails. Is there a fluent nhibernate way that I can accomplish
> > > > this, or will the solution lie more in nhibernate?
>
> > > > Thanks,
>
> > > > Kurt
>
> > > > <code>
> > > > public class User : AbstractUser{
> > > > }
>
> > > > public abstract AbstractUser
> > > > {
> > > >        public virtual Person Person {get; private set:}
> > > > }
>
> > > > public class Person{
> > > >        public virtual string LastName {get; private set;}
> > > >        public virtual string FirstName {get; private set;}
>
> > > >        public Person (string firstName, string lastName){
> > > >                FirstName = firstName;
> > > >                LastName = lastName;
> > > >        }
>
> > > >        public string FullName{
> > > >                get{
> > > >                        return string.Format("{0} {1}, FirstName,
> > > > LastName");
> > > >                }
> > > >        }
> > > > }
> > > > </code>
>
> > > --
> > > - Hudsonhttp://www.bestguesstheory.comhttp://twitter.com/HudsonAkridge
>
> --
> - Hudsonhttp://www.bestguesstheory.comhttp://twitter.com/HudsonAkridge
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to