#3 for all the same reasons everybody has said We already have a working (semi-working, ehh?) implementation out there w/ Criteria. Don't think it would make much sense to just switch that out with HQL. AST is the way to go - if we are going to take the time to do it again, lets do it right this time.
On Sat, Jan 17, 2009 at 7:40 AM, Ayende Rahien <[email protected]> wrote: > I am reviewing the possibilities that we have for a robust Linq > implementation, and it seems like we have several options. > > As a reminder, iMeta has granted us a full time developer for 3 months for > this task, so we have someone that can actually work on this specific task > full time (which solves the biggest problem that we had so far with this). > > Now, as I see this, we actually have two separate issues with NH Linq. The > first is the actual linq parsing, the second is moving from the expression > tree to a query. > > The first problem is not something that really concerns me. I think that we > can make use of existing linq providers impl to build our own. Basing > ourselves on something like IQueryable Toolkit or similar frameworks. > The second is the more complex issue, and that relates to the thorn in our > side, HQL AST. > > I think that we have 3 main options for NH Linq query building. > > 1) build a 3rd way to query the DB, sibling to HQL and Criteria. That would > be, in my opinion, stupid in the extreme, because of the scope of the task > and the fact that it would only cause more issues, not less. > > 2) take the Linq expression tree and generate HQL out of it, which we will > then use to perform the actual query. > This is probably the easiest approach, it would require minimal > modification from NHibernate and we can get it out the door very quickly. > This feels hacky, however. > > 3) build the HQL AST, port the AST query approach from Hibernate. Base the > Linq implementation on the AST. > That is where I _want_ to go. It is the biggest task, but I think that it > will leave us in a much better position overall. We also have the benefit of > being able to port the feature (except for the actual parsing) directly from > Hibernate, making the actual task much easier, and getting the benefits of > the test cases that they have. > > As a bonus, Steve, the developer that we have for this task, has some > experience with GOLD parser, Which is what Artorius (the latest attempt to > create the NH HQL AST) is written in. > > I would like to get your opinions about where we should go.
