This has been fixed in r1226.

 - Jon

On Thu, 2009-08-27 at 02:52 -0700, Matt Dargavel wrote:
> Hi there,
> 
>   I have a couple of tables that have a few fields that are the same
> and I do some common operations on both the tables.  To try and
> minimise code duplication I created an interface that declared these
> common fields and applied the interface to both table classes.
> 
>   This let me create a Generic function that did the query I wanted to
> do.  As a simplified example:
> 
> private static IEnumerable<T> PrefixMatch<T>(this IQueryable<T> query,
> string searchValue) where T : IRoutingGroupLookup
> {
>    var lookups = query.Where(l => (l.LookupType ==
> RoutingLookupType.Prefix)).OrderByDescending(l =>
> l.LookupValue.Length);
> 
>   return lookups;
> }
> 
>   And the code to use it:
> 
> MyDb db = new MyDb(conn);
> db.InboundRoutingGroupLookups.PrefixMatch(myPrefix).FirstOrDefault();
> db.OutboundRoutingGroupLookups.PrefixMatch(myPrefix).FirstOrDefault();
> 
>   When trying to run the query, DBLinq throws an ArgumentException in
> SqlProvider.GetLiteral(...).  The operation type it's trying to do is
> a MemberAccess in the where clause.  If I replace the generic function
> with two identical functions that use the actual table classes then it
> all works ok.  I tried looking through the source code but couldn't
> work out where the Expression creation wasn't recognising the member
> as a table column.
> 
>   Is it possible to do this kind of thing?  If so, if anyone could
> give me some pointers on where I should look they'd be gratefully
> received!
> 
>     Best Regards,
> 
>          Matt.
> 
> 
> 

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"DbLinq" 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/dblinq?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to