+1 to that. The lambda map is hardly the most intuitive for dynamic
components.

On Sun, Jun 21, 2009 at 12:35 AM, rob <[email protected]> wrote:

>
> That would be great!!!
>
> On Jun 20, 7:05 pm, Paul Batum <[email protected]> wrote:
> > Ahh yes, of course. Indeed, this expression from my code above is never
> > executed:
> >
> > (string)x[temp]
> >
> > It is converted to an expression tree and inspected. The code that does
> this
> > inspection is -very- basic, I can see how this won't work currently.
> >
> > Maybe we should add a Map overload for dynamic components that just takes
> a
> > string instead of a lambda expression?
> >
> > On Sun, Jun 21, 2009 at 4:33 AM, rob <[email protected]> wrote:
> >
> > > Hmm..then my code should work too..i'll have to take a closer look on
> > > Monday.
> >
> > > But.... I think what you're saying makes sense if you were invoking
> > > the funcion declared in the lamda within the same scope; it would use
> > > the temp variable declared in the loop. But, in this case, the
> > > function is invoked in a different class (RefelectionHelper I
> > > believe), and that class doesn't declare a variable called temp.
> > > Also, I can't remember the code now,  but I don't think fluent ever
> > > invokes the funciotn declared by the lambda; it just examines the
> > > expression tree to pull out properties for the purposes of generating
> > > the mapping. And when it does, it won't know what to do w/ "temp".
> > > Hopefully I'm wrong. :)
> >
> > > On Jun 20, 12:19 pm, James Gregory <[email protected]> wrote:
> > > > Rob: Just FYI, as far as I understand temp will still exist at the
> time
> > > > because it's used within the closure. .Net imports that variable into
> the
> > > > lambda's scope.
> >
> > > > On Sat, Jun 20, 2009 at 4:32 PM, Pablo Ruiz <[email protected]>
> > > wrote:
> >
> > > > > private void SetupComponentParts(DynamicComponentPart<IDictionary>
> > > part)
> > > > > {
> > > > >    IList<string> dynamicColumns = GetCustomerColumns();
> > > > >    foreach(string col in dynamicColumns)
> > > > >    {
> > > > >      string temp = col; // Avoid any modified closure issues.
> > > > >      c.Map(x => (string)x[temp]);
> > > > >    }
> > > > > }
> >
> > > > > DynamicComponent(x => x.AdditionalFields, c =>
> SetupComponentParts(c));
> >
> > > > > That's it..
> >
> > > > > On Sat, Jun 20, 2009 at 5:11 PM, rob <[email protected]> wrote:
> >
> > > > >> Funny...this is exactly my situation. See my post on Dynamic
> > > > >> components from a couple days ago. Unfortunately, this statement
> won't
> > > > >> work:
> > > > >>  c.Map(x => (string)x[temp]);
> >
> > > > >> because the variable temp isn't evaluated in the loop; the
> statement
> > > > >> is turned into an expression tree and evaluated later; at which
> time
> > > > >> "temp" won't exist. I've been trying all sorts of things the past
> few
> > > > >> days, and may be close to a solution involvoing manually building
> the
> > > > >> expression tree. Should know more on Monday. Keep me posted if you
> > > > >> figure something out!
> >
> > > > >> On Jun 20, 8:45 am, Paul Batum <[email protected]> wrote:
> > > > >> > Hi Silvia,
> >
> > > > >> > Can the column details be discovered at startup time? I'm
> thinking
> > > of
> > > > >> > something like this:
> >
> > > > >> > IList<string> dynamicColumns = GetCustomerColumns();
> > > > >> > DynamicComponent(x => x.AdditionalFields, c =>{
> > > > >> >   foreach(string col in dynamicColumns)
> > > > >> >   {
> > > > >> >     string temp = col; // Avoid any modified closure issues.
> > > > >> >     c.Map(x => (string)x[temp]);
> > > > >> >   }
> >
> > > > >> > });
> >
> > > > >> > Paul Batum
> >
> > > > >> > On Tue, Jun 16, 2009 at 10:10 AM, Silvia <[email protected]>
> > > wrote:
> >
> > > > >> > > I have the below situation that I need help figure it out.
> > > > >> > > I am using fluent nhibernate with a legacy database. I need to
> map
> > > > >> > > some additional columns to a dictionary(?) property in my
> entity
> > > > >> > > dynamically, because I do not know the number of columns and
> > > column
> > > > >> > > names and other specifications at compile time and I
> dynamically
> > > need
> > > > >> > > to work with those columns(insert,update...).There is another
> > > object
> > > > >> > > which has those information and has a relationship with my
> main
> > > entity
> > > > >> > > based on the value of two other columns.Is this possible in
> > > > >> > > nhibernate?
> > > > >> > > I tried to use DynamicComponent but the problem is I don't
> know
> > > what
> > > > >> > > would be the properties in my component.
> > > > >> > > I have something like this:
> >
> > > > >> > > In Entity.cs :
> > > > >> > > public virtual IDictionary AdditionalFields { get; set; }
> > > > >> > > public virtual  Info AdditionalFieldsInfo{get; set;}
> >
> > > > >> > > And in  EntityMap.cs:
> > > > >> > > References(x => x.AdditionalFieldsInfo);
> > > > >> > > and I supposedly should have something like this:
> > > > >> > > DynamicComponent(x => x.AdditionalFields , m =>
> > > > >> > > {
> > > > >> > > m.Map(?Which I don't know how to map because I dont have the
> > > number of
> > > > >> > > columns to be mapped and column names.These information needs
> to
> > > come
> > > > >> > > from AdditionalFieldsInfo);
> > > > >> > > });
> >
> > > > >> > > I also posted the question to nhusers group(
> > > [email protected])
> > > > >> > > but I still not very sure how to implement this.
> > > > >> > > I do appreciate if someone could help.
> > > > >> > > Thanks.
> > > > >> > > Silvia
> >
>

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