linq to sql 使用试图做数据源 翻页时出现的异常的一种解决办法

问题:asp.net使用linq,在sql server 2005下面使用视图分页没有问题,但在sql server 2000下面使用视图
提示:此提供程序只支持对返回实体或投影(包含所有标识列)的有序查询使用 Skip(),这种查询为单表(非联接)查询,或者为 Distinct、Except、Intersect 或 Union (非 Concat)操作。


原因:LINQ生成分布查询语句时,需要依赖主键。那么,如下情况将导致出现上述错误
1)数据表未定义主键
2)查询对象为视图对象

奇怪的是:在sql server 2005里,能识别视图中某个表的主键,不会提示错误,到sql server 2000下面就提示错误。

反正也不能回避问题,再网上搜索了一下相关的问题,确实很多人遇到,主要是试图的主键问题,表的主键很容易解决,在sql server里视图是没有主键的。
找到LINQ to SQL 类的文件,下面有个xxx.designer.cs,找到相应的试图:


关键是这一句: [Column(Storage="_ProID", DbType="Int NOT NULL", IsDbGenerated=true,IsPrimaryKey=true)]
加上加粗部分的就可以了。

(转载)

posted @ 2010-01-28 13:00  足够有晋  阅读(371)  评论(0编辑  收藏  举报