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] > > >>> > > > >>> . > > >>> 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] > > >> > > > >> . > > >> 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.- 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]. For more options, visit this group at http://groups.google.com/group/nhusers?hl=en.
