I'm sorry José... but if you can work with strings the best way to wary your domain is HQL
2010/3/7 José F. Romaniello <[email protected]> > dynamic linq is a ***. > Why do you wan that? Who defines that string? > > instead of concatenating strings to make your query you can create an > expression with: > > Expression.Parameter() > Expression.Property() > Expression.... > > > > > 2010/3/7 Stefan Wenig <[email protected]> > > Hi >> >> so you want to use LINQ 2 objects (the IEnumerable version), not LINQ >> 2 NH? >> In any case, Dynamic LINQ only provides parsing of Where etc. clauses, >> not entire queries. So this is only a complete solution if the >> structure of your query is alreay known at compile time and users just >> enter conditions etc. DL is not using lamda notation, BTW, so I don't >> know how multiple sources are referred to in more complex queries >> (might not be supported at all, need to check). >> I'd try dynamic compilation, that shouldn't be too hard. (CodeDOM can >> help with compilation and even generate boiler plate code for any >> supported language.) Use the #line directive to get useful error >> messages. You have to take care of assembly loading though, and you >> can't unload them anymore. (There's been talk about straight type/ >> assembly unloading support in .NET 4, but I didn't check). Using >> separate AppDomains is going to be a problem, especially if you want >> to execute the query in memory (you can hardly pass the entire object >> graph via remoting/serialization). Using Mono C# to compile to dynamic >> methods would be cool, but it'd be a lot of work, and would not work >> for queries that generate types (anonymous types or - implicitly - via >> transparent identifiers). >> >> VB10 was rumored to have REPL-support, so if you can wait for that and >> accept VB syntax, check out the RC. If that's not an option and you >> need unloading, I'd look at HQL again. >> >> Let us know how you solved that one! Support for user-provided LINQ is >> definitely an interesting feature. >> >> Stefan >> >> On 6 Mrz., 16:32, CassioT <[email protected]> wrote: >> > Because I already have the object graph and I don't want to hit the >> > database again. >> > >> > I used a DAO to get the first object only to give you a scenario, but >> > the real code is not like that. >> > >> > But even if it was the case I would chose LINQ. The string will be >> > written in the UI and I don't want HQL (or even SQL) in the UI. I want >> > it to be technology independent. That's why LINQ to NH is so waited. >> > >> > Thanks all replies. >> > >> > On Mar 5, 7:09 pm, Mohamed Meligy <[email protected]> wrote: >> > >> > >> > >> > > If you are using strings, why not use HQL directly? Then life should >> be >> > > pretty much more straight forward. >> > > Dynamic LINQ library (referred by Angel) is also great, and many tried >> it >> > > successfully. >> > >> > > -- >> > > Mohamed Meligy >> > > Senior Developer, Team Lead Backup (.Net Technologies - TDG - >> Applications) >> > > Injazat Data Systems >> > > P.O. Box: 8230 Abu Dhabi, UAE. >> > >> > > Phone: +971 2 6992700 >> > > Direct: +971 2 4045385 >> > > Mobile: +971 50 2623624, +971 55 2017 621 >> > >> > > E-mail: [email protected] >> > > Weblog:http://gurustop.net >> > >> > > On Fri, Mar 5, 2010 at 9:53 PM, Angel Java Lopez < >> [email protected]>wrote: >> > >> > > > Hi people! >> > >> > > > Cassio, check the additional code described in >> > >> > > > >> http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1... >> > >> > > > I use some of this in my example >> > > >http://ajlopez.wordpress.com/2009/01/30/dynamic-expressions-example/ >> > > > there are more links there, pointing to other implementation >> > >> > > > There is a Codeplex project, simplifyng the build of a >> QueryProvider, not >> > > > related with your question, but it could be interesting. I guess >> NHibernate >> > > > devs were using it to build the new Linq implemented in NH >> > >> > > > Angel "Java" Lopez >> > > >http://www.ajlopez.com >> > > >http://twitter.com/ajlopez >> > >> > > > On Fri, Mar 5, 2010 at 4:40 PM, Ken Egozi <[email protected]> >> wrote: >> > >> > > >> you could either look up c# parser and lexer codes, and tweak to >> your >> > > >> needs. Maybe look at Mono's c# compiler. >> > > >> that is however non trivial work. >> > >> > > >> you can also wrap the text with a valid c# class and method >> declarations, >> > > >> then use a CodeDomProvider.CompileAssemblyFromSource() to get an >> assembly, >> > > >> lookup your new type, and invoke the new method. >> > >> > > >> On Fri, Mar 5, 2010 at 9:23 PM, CassioT <[email protected]> wrote: >> > >> > > >>> Hi all. This is an NH off topic but it is C# and programming >> anyway. >> > >> > > >>> Let's suppose: >> > >> > > >>> var blog = dao.GetBlog(1); //Blog has posts >> > >> > > >>> string s = "blog.Posts.Sum(p => p.NumOfVisitors)"; >> > >> > > >>> or >> > >> > > >>> string s = "Posts.Sum(p => p.NumOfVisitors)"; // considering blog >> as >> > > >>> the root object >> > >> > > >>> What is the best way to translate this string in code dynamically? >> > > >>> This is only a simple example but it is near of what I want. >> > >> > > >>> Thanks. >> > >> > > >>> -- >> > > >>> You received this message because you are subscribed to the Google >> Groups >> > > >>> "nhusers" group. >> > > >>> To post to this group, send email to [email protected]. >> > > >>> To unsubscribe from this group, send email to >> > > >>> [email protected]<nhusers%[email protected]> >> <nhusers%[email protected]<nhusers%[email protected]>> >> > > >>> . >> > > >>> For more options, visit this group at >> > > >>>http://groups.google.com/group/nhusers?hl=en. >> > >> > > >> -- >> > > >> Ken Egozi. >> > > >>http://www.kenegozi.com/blog >> > > >>http://www.delver.com >> > > >>http://www.musicglue.com >> > > >>http://www.castleproject.org >> > > >>http://www.idcc.co.il-הכנס הקהילתי הראשון למפתחי דוטנט - בואו >> בהמוניכם >> > >> > > >> -- >> > > >> You received this message because you are subscribed to the Google >> Groups >> > > >> "nhusers" group. >> > > >> To post to this group, send email to [email protected]. >> > > >> To unsubscribe from this group, send email to >> > > >> [email protected]<nhusers%[email protected]> >> <nhusers%[email protected]<nhusers%[email protected]>> >> > > >> . >> > > >> For more options, visit this group at >> > > >>http://groups.google.com/group/nhusers?hl=en. >> > >> > > > -- >> > > > You received this message because you are subscribed to the Google >> Groups >> > > > "nhusers" group. >> > > > To post to this group, send email to [email protected]. >> > > > To unsubscribe from this group, send email to >> > > > [email protected]<nhusers%[email protected]> >> <nhusers%[email protected]<nhusers%[email protected]>> >> > > > . >> > > > For more options, visit this group at >> > > >http://groups.google.com/group/nhusers?hl=en.- Zitierten Text >> ausblenden - >> > >> > - Zitierten Text anzeigen - >> >> -- >> You received this message because you are subscribed to the Google Groups >> "nhusers" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]<nhusers%[email protected]> >> . >> For more options, visit this group at >> http://groups.google.com/group/nhusers?hl=en. >> >> > -- > You received this message because you are subscribed to the Google Groups > "nhusers" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<nhusers%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/nhusers?hl=en. > -- Fabio Maulo -- You received this message because you are subscribed to the Google Groups "nhusers" 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/nhusers?hl=en.
