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
-~----------~----~----~----~------~----~------~--~---