EF另一个 SqlParameterCollection 中已包含 SqlParameter。
代码:
SqlParameter[] commandParameters = new SqlParameter[]{
new SqlParameter("@CultID",filters.ParentID)
};
var result = db.Database.SqlQuery<FM_PlantSolutions>(@"select s.* ,u.UserName as PrincipalName,
isnull(ue.UserName,'无') as ExaminerName ,i.BaseName AS InputsTypeName
from [v_PlantSolutionsRelation] as r
inner join dbo.FM_Solutions as s on r.SoluID = s.SoluID
inner join dbo.U_UserInfo as u on s.Principal= u.UserID
left join dbo.U_UserInfo as ue on s.Examiner = ue.UserID
inner join dbo.B_BaseInfo as i on s.InputsType=i.BaseValue
where r.CultID = CultID and i.ClassID = 21 ", commandParameters);
var q= result.OrderBy(t => t.SoluName).Skip((filters.page - 1) * filters.rows).Take(filters.rows);
return new
{
rows = q.ToList(),
records = result.Count(),
page = filters.page,
pagesize = filters.rows
};
查询报表的时候需要通过两次查询取出数据。
第一次,用count(*)查出总数; 第二次,用rownumber分页取出想要的页内容; 然而,无论怎么修改,总是报错:另一个 SqlParameterCollection 中已包含 SqlParameter。
参照了网友的做法:https://www.cnblogs.com/jhli/p/6898650.html 但是并没有解决问题,分析报错的原理,大概是这段代码执行了两次,传入了两次同样的参数,所以索性将.ToList()往前放,直接将所有数据加载到内存中,再进行分页,问题解决了,修改后的代码
SqlParameter[] commandParameters = new SqlParameter[]{
new SqlParameter("@CultID",filters.ParentID)
};
var result = db.Database.SqlQuery<FM_PlantSolutions>(@"select s.* ,u.UserName as PrincipalName,
isnull(ue.UserName,'无') as ExaminerName ,i.BaseName AS InputsTypeName
from [v_PlantSolutionsRelation] as r
inner join dbo.FM_Solutions as s on r.SoluID = s.SoluID
inner join dbo.U_UserInfo as u on s.Principal= u.UserID
left join dbo.U_UserInfo as ue on s.Examiner = ue.UserID
inner join dbo.B_BaseInfo as i on s.InputsType=i.BaseValue
where r.CultID = CultID and i.ClassID = 21 ", commandParameters).ToList();
var q= result.OrderBy(t => t.SoluName).Skip((filters.page - ) * filters.rows).Take(filters.rows);
return new
{
rows = q,
records = result.Count(),
page = filters.page,
pagesize = filters.rows
};
}
EF另一个 SqlParameterCollection 中已包含 SqlParameter。的更多相关文章
- 【EF框架】另一个 SqlParameterCollection 中已包含 SqlParameter。
查询报表的时候需要通过两次查询取出数据. 第一次,用count(*)查出总数: 第二次,用rownumber分页取出想要的页内容: 为了防止sql注入,使用SqlParameter来传递参数 var ...
- 另一个SqlParameterCollection中已包含SqlParameter
一般情况下,我们定义的一个SqlParameter参数数组,如: SqlParameter[] parms = { new SqlParamete ...
- 另一个 SqlParameterCollection 中已包含 SqlParameter
出处:http://www.cnblogs.com/OldYongs/archive/2011/03/12/1982021.html#2742742 一般情况下,我们定义的一个SqlParameter ...
- 另一个SqlParameterCollection中已包含SqlParameter(转)
一般情况下,我们定义的一个SqlParameter参数数组,如: SqlParameter[] parms = { new SqlParamete ...
- Ibatis.net总是报:【ExecuteStoreCommand SqlParameterCollection 中已包含 SqlParameter】(转)
今天很奇怪调用EF的ExecuteStoreCommand 出现了个这样的错误,怎么也调试不过,痛定思痛 原来 command被连着调用了而没有销毁掉 public static DataTabl ...
- 另一个 OleDbParameterCollection 中已包含 OleDbParameter 错误分析及解决办法
程序非常简单,就是从一个表中取出一个符合要求的数据,如果取到,就把该数据对应的计数加1.也就是执行不同的两个SQL语句操作同一个表,并且这两个SQL的参数是一样的.在一个函数里完成这个调用.执行第二个 ...
- 一个字符串中可能包含a~z中的多个字符,如有重复,如String data="aavzcadfdsfsdhshgWasdfasdf",求出现次数最多的那个字母及次数,如有多个重复的则都求出。
主要掌握String中的方法 char[] toCharArray() 将此字符串转换为一个新的字符数组. int indexOf(String str) 返回 ...
- 在SQLSERVER中如何检测一个字符串中是否包含另一个字符串
--当charindex返回值大于0时则包含 为0不包含 select CHARINDEX('456','123456') SQL语句使用CHARINDEX函数,来测试一个字符串中是否包含另一个字 ...
- Java 正则判断一个字符串中是否包含中文
使用正则判断一个字符串中是否包含中文或者中文字符 代码实现如下: import java.util.regex.Matcher; import java.util.regex.Pattern; /** ...
随机推荐
- 第一个vue程序(极客时间Vue视频笔记)
第一个vue程序 <body> <div class="app"> {{message}}--{{message+','+message}} <div ...
- mybatis 批量操作 ------持续更新
mybatis 不存在则才进行添加 # 添加的 sql 语句insert into sys_link_post_user(post_id,user_id)# 进行批量添加 (若不需要可以取消 froe ...
- 【6.12校内test】T3 城市交通费
要不我先去写T2吧(逃 先把题目搞上来: [问题描述] 有 n 个城市,编号 1~n.其中 i 号城市的繁华度为 pi.省内有 m 条可以双向同行的高速 公路,编号 1~m.编号为 j 的高速公路连接 ...
- Makefile中include、-include、sinclude
include.-include.sinclude使用 在 Makefile 使用 include 关键字可以把别的 Makefile 包含进来,这很像 C 语言的#include,被包含的文件会原模 ...
- mybatis中foreach的用法以及特殊的情况的用法
foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有 item,index,collection,open,separator,close. ...
- 16.AutoMapper 之可查询扩展(Queryable Extensions)
https://www.jianshu.com/p/4b23e94a7825 可查询扩展(Queryable Extensions) 当在像NHibernate或者Entity Framework之类 ...
- LVS负载均衡常用的工作模式有NAT、DR、和TUN三种,其中DR模式性能最为优越,使用最为广泛。
一.安装LVS LVS的编译安装参考本站文章:http://www.linuxe.cn/post-192.html,对于LVS这种功能性软件,在生产中用yum安装也是没有问题的. 1 yum inst ...
- 表格强制换行 table-layout:fixed
如果想要一个table固定大小,里面的文字强制换行(尤其是在一长串英文文本,并且中间无空格分隔的情况下),以达到使过长的文字不撑破表格的目的,一般是使用样式:table-layout:fixed.
- 在浏览器输入url,发生了什么?BSC结构图(百度搜索关键字发生了什么?)
服务器---------->软件(客户端) 百度搜索周杰伦,发生了什么
- 【maven】IDEA:存在jar包,pom.xml文件没报错,但是Maven-Project-Dependencies有红线报错
1.这个问题很简单 把pom.xml里这些出错的jar包的引用先删除,再刷新一次,再添上,就行了 2.大概是idea有点反应迟钝