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