<

关于Mono使用linq查询的几个BUG

文章来源:不详     点击数:    更新时间:2011-06-19 00:39 字体:[ ]

服务器环境如下:
系统: Ubuntu 10.10
Web服务器:Jexus/4.2.3 Linux
Mono版本: Mono 2.10.1

代码如下:

View Code
1 using (BizDataContext BDC = new BizDataContext())
2 {
3 int colID = ColumnInfo.ID;
4 var list = from o in BDC.Article where o.ColID == ColumnInfo.ID orderby o.ID descending select new { ArticleID = o.ID, Title = o.Title, ColID = o.ColID, CreateAt = o.CreateAt };
5 pageSplit1.RecordCount = list.Count();
6 rptList.DataSource = list.Skip((pageSplit1.PageIndex - 1) * pageSplit1.PageSize).Take(pageSplit1.PageSize);
7 rptList.DataBind();
8 }

这个代码在IIS下运行一切正常,然后在Mono下就出错了,报出如下的错误。

Server Error in '/' Application


 System.ArgumentException: New 

Description: HTTP 500. Error processing request.


经过一番测试,貌似是where条件和new的匿名对象不能同时存在就会报这个错。于是把linq查询的代码改成如下:

var list = from o in BDC.Article where o.ColID == colID orderby o.ID descending select o;

继续运行,继续报错。

Server Error in '/' Application


')' 附近有语法错误。

Description: HTTP 500. Error processing request.

这个错误貌似是sql查询引起的,于是打印出linq翻译出的sql语句,如下:

1 SELECT * FROM ( SELECT [ArticleID], [SiteID], [AdminID], [ColID], [Title], [SubTitle], [CreateAt], [Click], [Reply], [Description], [Content], [Cover], [Type], [AlbumID] , ROW_NUMBER() OVER(ORDER BY [ArticleID], [SiteID], [AdminID], [ColID], [Title], [SubTitle], [CreateAt], [Click], [Reply], [Description], [Content], [Cover], [Type], [AlbumID] ) AS [__ROW_NUMBER] FROM [con_Article] WHERE ([ColID] = ) AS [t0] WHERE [__ROW_NUMBER] BETWEEN 0+1 AND 0+20 ORDER BY [__ROW_NUMBER]

将本文章发给好友:关于Mono使用linq查询的几个BUG
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
------分隔线----------------------------