You can do it with a custom interceptor (a class derived from ExpressionVisitor), like this: http://weblogs.asp.net/ricardoperes/archive/2013/05/23/intercepting-linq-queries.aspx . Look for a BinaryExpression where some property (left value) is being compared to null (right value) and replace the right value for "".
RP On Friday, May 17, 2013 1:48:31 PM UTC+1, pvginkel wrote: > > We're in the process of converting a legacy application to NHibernate. One > of the "interesting" aspects of this application is that part of it is > written in Magic <http://www.magicsoftware.com/>, which does not allow > columns to have NULL, but instead requires it to have a space. This means > that some tables do not allow NULL in string columns, and some tables do. > > I have already implemented some functionality to hide this fact using a > few IType implementations. These work nicely and loading and saving > entities already automatically convert spaces to NULL's. > > However, I can't seem to find a way to fix querying. We're primarily using > LINQ as our query mechanism, and I would like the following: > > db.Addresses.Where(p => p.Street == null) > > to be converted to: > > where o.Street = ' ' > > instead of: > > where o.Street is null > > I've already implemented some custom LINQ functions, but because the > developer does not know what fields to apply these functions to, I would > very much prefer an automated mechanism. I have the feeling the best way to > accomplish this may be using a custom HQL AST visitor (maybe there are > better solutions), but I can't seem to find an extension point to provide > something like that. > > What is the best way to get this to work? > -- You received this message because you are subscribed to the Google Groups "nhusers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/nhusers?hl=en-US. For more options, visit https://groups.google.com/groups/opt_out.
