ORDER BY

ORDER BY

Postby Zoran » Tue 01 Sep 2009 00:40

1. Order by a column that is not a PK (DocumentNumber):

(from q in SalesOrders
where q.Id == 1
select q).OrderBy(x => x.DocumentNumber)

generates an error ("Specified method is not supported.").

2. The same code ordered by a PK (Id) generates no error:

(from q in SalesOrders
where q.Id == 1
select q).OrderBy(x => x.Id)

3. The result is the same when using from...where...orderby...select query.

4. (from q in SalesOrders
where q.Id == 1
select q).AsEnumerable().OrderBy(x => x.DocumentNumber)
always works.

How can I use remote ORDER BY? Ordering by a not-PK column worked fine up to a few versions ago.
Zoran
 
Posts: 44
Joined: Thu 28 Apr 2005 21:55
Location: Zagreb, Croatia

Postby Shalex » Fri 04 Sep 2009 10:19

Please try the 4.55.39 version of dotConnect for PostgreSQL. Does the problem persist with this version too? If yes, please post here your call stack when the error arises with the 4.55.39 version. We cannot reproduce the issue.
Shalex
Devart Team
 
Posts: 7774
Joined: Thu 14 Aug 2008 12:44

Postby Zoran » Sat 05 Sep 2009 07:25

I used 4.55.39. Here is the stack:
at Devart.Data.Linq.Provider.Query.p.c.a(a0 A_0, MemberInfo A_1)
at Devart.Data.Linq.Provider.Query.p.c.b(bc A_0)
at Devart.Data.Linq.Provider.Query.p.c.a(bc A_0)
at Devart.Data.Linq.Provider.Query.SqlVisitor.a(SqlNode A_0)
at Devart.Data.Linq.Provider.Query.SqlVisitor.c(SqlExpression A_0)
at Devart.Data.Linq.Provider.Query.SqlVisitor.a(o A_0)
at Devart.Data.Linq.Provider.Query.SqlVisitor.a(SqlNode A_0)
at Devart.Data.Linq.Provider.Query.SqlVisitor.c(SqlExpression A_0)
at Devart.Data.Linq.Provider.Query.SqlVisitor.e(bo A_0)
at Devart.Data.Linq.Provider.Query.p.c.a(bo A_0)
at Devart.Data.Linq.Provider.Query.SqlVisitor.a(ax A_0)
at Devart.Data.Linq.Provider.Query.p.c.a(ax A_0)
at Devart.Data.Linq.Provider.Query.SqlVisitor.a(SqlNode A_0)
at Devart.Data.Linq.Provider.Query.SqlVisitor.e(SqlNode A_0)
at Devart.Data.Linq.Provider.Query.SqlVisitor.e(bo A_0)
at Devart.Data.Linq.Provider.Query.p.c.a(bo A_0)
at Devart.Data
.Linq.Provider.Query.SqlVisitor.a(ax A_0)
at Devart.Data.Linq.Provider.Query.p.c.a(ax A_0)
at Devart.Data.Linq.Provider.Query.SqlVisitor.a(SqlNode A_0)
at Devart.Data.Linq.Provider.Query.p.a(SqlNode A_0, SqlFactory A_1, TypeSystemProvider A_2, ao A_3, a A_4)
at Devart.Data.Linq.Provider.DataProvider.a(c A_0, Type A_1, SqlNode A_2, IList`1 A_3)
at Devart.Data.Linq.Provider.DataProvider.a(Expression A_0)
at Devart.Data.Linq.Provider.DataProvider.h(Expression A_0)
at Devart.Data.Linq.DataQuery`1.i()
at Microline.Test.Test.test46() in C:\Users\Administrator\Source\C#\MOL\Test\Test.cs:line 1130
at Microline.Test.Test.render() in C:\Users\Administrator\Source\C#\MOL\Test\Test.cs:line 1110
Zoran
 
Posts: 44
Joined: Thu 28 Apr 2005 21:55
Location: Zagreb, Croatia

Postby Shalex » Mon 07 Sep 2009 15:06

Please check the DocumentNumber property. Probably, it is not mapped to the field of the table via the Column's attributes.
Shalex
Devart Team
 
Posts: 7774
Joined: Thu 14 Aug 2008 12:44

Postby Zoran » Tue 08 Sep 2009 00:38

This was a bad example because DocumentNumber overrides OrderNumber, but order by OrderNumber doesn't work either although it is defined with an attribute: [Column (Storage = "orderDate", Name = "Orddate")]. I assume that the definition is all right because other operations work with columns that cannot be a part of "order by" clause. Or is there an error here?
Error stack for OrderNumber seems to be the same as for DocumentNumber.
Zoran
 
Posts: 44
Joined: Thu 28 Apr 2005 21:55
Location: Zagreb, Croatia

Postby Shalex » Wed 09 Sep 2009 12:38

Could you please send us a working sample with DataContext (or part of DataContext which participates in the query)? We will try to reproduce the problem. Please contact us via our contact form (http://www.devart.com/company/contact.html).
Shalex
Devart Team
 
Posts: 7774
Joined: Thu 14 Aug 2008 12:44

Postby Zoran » Sat 12 Sep 2009 19:03

I am hesitating because it will take some tome to make the separate project. Because of performance I decided not to use LINQ in complex queries and in simple ones AsEnumerable() solves the problem.
Zoran
 
Posts: 44
Joined: Thu 28 Apr 2005 21:55
Location: Zagreb, Croatia


Return to dotConnect for PostgreSQL