存储过程分页 Ado.Net分页 EF分页 满足90%以上
存储过程分页:
create proc PR_PagerDataByTop
@pageIndex int,
@pageSize int,
@count int out
as
select top(@pageSize) * from dbo.userInfo where ID not in
(
select top((@pageIndex-1)*@pageSize) ID from dbo.userInfo
)
set @count = (select COUNT(1) from dbo.userInfo)
top pager
alter proc PR_PagerDataByRow
@pageIndex int,
@pageSize int,
@count int out
as
select * from
(
select *,ROW_NUMBER() over (order by id) as xh from dbo.userInfo
)as tb2
where tb2.xh between (@pageIndex-1)*@pageSize+1 and @pageIndex*@pageSize
set @count = (select COUNT(1) from dbo.userInfo)
row_number pager
Ado.Net分页:
这里只上传一个例子(同理:可以调用上面2个存储过程):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; using System.Data;
using System.Data.SqlClient; namespace UseStoredProcedure
{
class Program
{
static void Main(string[] args)
{
string conStr = "server=.;database=MyDb;uid=sa;pwd=123";
using (SqlConnection conn = new SqlConnection(conStr))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "PR_PagerData";
cmd.Parameters.Add("@pageSize", );
cmd.Parameters.Add("@pageIndex", );
cmd.Parameters.Add("@count", ).Direction = ParameterDirection.Output;
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
conn.Open();
DataSet ds = new DataSet();
da.Fill(ds);
int count = (int)cmd.Parameters["@count"].Value;
}
}
}
}
}
}
调用存储过程
EF分页:
Linq(EF实际也是调用Ado.Net):
public IEnumerable<T> GetPageUserInfos<s>(int pageIndex, int pageSize, Func<T, bool> whereLmd, Func<T, s> orderLmd, out int count, bool isAsc)
{
var set = db.Set<T>();
count = set.Count();
return set.Where(whereLmd).OrderBy(orderLmd).
Skip(pageSize * (pageIndex - )).Take(pageSize);
}
Linq通用完整分页
EF增删改查:
#region 增删改查
//增
public int Add(T model)
{
db.Set<T>().Add(model);
return db.SaveChanges();
} //删
public int Del(T model)
{
db.Set<T>().Attach(model);
db.Set<T>().Remove(model);
return db.SaveChanges();
} public int DelBy(Func<T, bool> whereLmd)
{
db.Set<T>().RemoveRange(db.Set<T>().Where(whereLmd));
return db.SaveChanges();
} //改
public int Modify(T model, params string[] propName)
{
DbEntityEntry de = db.Entry(model);
de.State = System.Data.Entity.EntityState.Unchanged;
foreach (var str in propName)
{
de.Property(str).IsModified = true;
}
return db.SaveChanges();
} //查
public IQueryable<T> GetList(Expression<Func<T, int, bool>> whereLmd)
{
return db.Set<T>().Where(whereLmd);
} //分页
public IEnumerable<T> GetPageUserInfos<s>(int pageIndex, int pageSize, Func<T, bool> whereLmd, Func<T, s> orderLmd, out int count, bool isAsc)
{
var set = db.Set<T>();
count = set.Count();
return set.Where(whereLmd).OrderBy(orderLmd).
Skip(pageSize * (pageIndex - )).Take(pageSize);
}
#endregion
EF通用增删该查泛型
TT模板:
<#@ template language="C#" debug="false" hostspecific="true"#>
<#@ include file="EF.Utility.CS.ttinclude"#><#@
output extension=".cs"#> <# CodeGenerationTools code = new CodeGenerationTools(this);
MetadataLoader loader = new MetadataLoader(this);
CodeRegion region = new CodeRegion(this, );
MetadataTools ef = new MetadataTools(this); string inputFile = @"..\MODEL\{模板文件名}.edmx"; EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);
string namespaceName = code.VsNamespaceSuggestion(); EntityFrameworkTemplateFileManager fileManager = EntityFrameworkTemplateFileManager.Create(this); #> using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace IDAL
{
<# // Emit Entity Types
foreach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name))
{
//fileManager.StartNewFile(entity.Name + "RepositoryExt.cs");
//BeginNamespace(namespaceName, code); #>
public partial interface I<#= entity.Name#>DAL : IBaseDAL<MODEL.<#= entity.Name#>>
{
} <# }#> }
通用子类模板
MySqlHelper:
using System;
using System.Data;
using System.Data.SqlClient; namespace AdoNet
{
public static class SQLHelper
{
#region simplerHelper
static string strCon = System.Configuration.ConfigurationManager.ConnectionStrings["sql"].ConnectionString;
#region 1.0 返回受影响行数
public static int ExecuteNonQuery(string sql, params SqlParameter[] sqlparams)
{
return ExecuteNonQuery(sql, CommandType.Text, sqlparams);
}
public static int ExecuteNonQuery(string sql, CommandType type, params SqlParameter[] sqlparams)
{
using (SqlConnection conn = new SqlConnection(strCon))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
try
{
conn.Open();
cmd.CommandType = type;
if (sqlparams.Length > )
{
cmd.Parameters.AddRange(sqlparams);
}
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch
{
return -;
}
}
}
}
#endregion
#region 2.0 查询单个值
public static object ExecuteScalar(string sql, params SqlParameter[] sqlparams)
{
return ExecuteScalar(sql, CommandType.Text, sqlparams);
}
public static object ExecuteScalar(string sql, CommandType type, params SqlParameter[] sqlparams)
{
using (SqlConnection conn = new SqlConnection(strCon))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
try
{
conn.Open();
cmd.CommandType = type;
if (sqlparams.Length > )
{
cmd.Parameters.AddRange(sqlparams);
}
return cmd.ExecuteScalar();
}
catch
{
return null;
}
}
}
}
#endregion
#region 3.0 查询单表
public static DataTable GetTable(string sql, params SqlParameter[] sqlparams)
{
return GetTable(sql, CommandType.Text, sqlparams);
}
public static DataTable GetTable(string sql, CommandType type, params SqlParameter[] sqlparams)
{
using (SqlConnection conn = new SqlConnection(strCon))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
try
{
conn.Open();
cmd.CommandType = type;
if (sqlparams.Length > )
{
cmd.Parameters.AddRange(sqlparams);
}
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
}
catch
{
return null;
}
}
}
}
#endregion
#endregion
}
}
MySqlHelper
存储过程分页 Ado.Net分页 EF分页 满足90%以上的更多相关文章
- (整理)EF分页的实现
最近做一个小功能,需要数据分页,因为小框架使用的是EF,因此查询了一下EF的分页. EF分页主要用到了skip和take两个方法: GetListBy(lamda xxxxx).skip(PageSi ...
- EF 分页查询优化
按照通常的方式分页查询至少要查询数据两遍,一个操作是查询总数,另一个是查询数据,这样有些耗时 这里介绍一个基于EF的插件 EntityFramework.Extended,当然这个插件有很多的功能,比 ...
- EF分页中的陷阱
(一) 前言 EF使用非常简单,但是如果使用不当就会误入EF陷阱中. ...
- .NET Core使用EF分页查询数据报错:OFFSET语法错误问题
在Asp.Net Core MVC项目中使用EF分页查询数据时遇到一个比较麻烦的问题,系统会报如下错误: 分页查询代码: ) * condition.PageSize).Take(condition. ...
- PHP+jQuery 长文章分页类 ( 支持 url / ajax 分页方式 )
/* ******* 环境:Apache2.2.8 ( 2.2.17 ) + PHP5.2.6 ( 5.3.3 ) + MySQL5.0.51b ( 5.5.8 ) + jQuery-1.8 **** ...
- 10.bootstrap分页,点击哪个分页号,哪个分页号就active
1.分页,点击哪个分页号,哪个分页号就active <nav> <ul class="pagination"> <li><a href=& ...
- laravel基础课程---15、分页及验证码(lavarel分页效果如何实现)
laravel基础课程---15.分页及验证码(lavarel分页效果如何实现) 一.总结 一句话总结: 数据库的paginate方法:$data=\DB::table("user" ...
- 基于layPage分页插件浅析两种分页方式
最近在开发过程中经常用到分页,今天挤出些时间来捋一捋自己的经验 在web开发中,一般显示数据列表页时,我们会用到分页控件来显示数据.采用分页一般基于两种不同的需求,一种是数据量不算很大,但是在页面展示 ...
- EF分页问题探讨之 OrderBy
EntityFramework 应用场景 最近被应用程序中页面加载慢的问题所折磨,看似容易的问题,其实并不容易(已经持续两天时间了),经过“侦查”,发现了两个“嫌疑犯”: EntityFramewor ...
随机推荐
- 奇怪吸引子---ShimizuMorioka
奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...
- 机器学习技法--学习笔记04--Soft SVM
背景 之前所讨论的SVM都是非常严格的hard版本,必须要求每个点都被正确的区分开.但是,实际情况时很少出现这种情况的,因为噪声数据时无法避免的.所以,需要在hard SVM上添加容错机制,使得可以容 ...
- Apache Error: Invalid command ‘Allow’, perhaps misspelled or defined by a module not included in the server configuration
在一个Window Server 2008R2系统上使用Apache架设了一个PHP的网站项目 在配置Apache的过程中出现了以下问题 根据上面的提示说是没有相应的权限,那就在虚拟主机里进行了配 ...
- 40页PPT勾画“互联网颠覆性思维”----诠释互联网思维
本文PPT内容涉及移动互联网的三个分支——移动电商.在线教育和新媒体. 不同领域一直是可以相互借鉴.相互渗透.相互学习的,在盈利模式和思维方式上有很多是共通的.
- parallels无法启动之大乌龙-流水账版
欢迎访问我的blog:blog.thinkinside.me 早上到公司,像往日一样,开电脑倒茶喝水. 回到座位打开parallels desktop,发现不对,打开PD非常的慢.显示正在初始 ...
- WPF 获取程序路径的一些方法,根据程序路径获取程序集信息
一.WPF 获取程序路径的一些方法方式一 应用程序域 //获取基目录即当前工作目录 string str_1 = System.AppDomain.CurrentDomain.BaseDirector ...
- SqlServer查看各个表所占空间大小的sql
CREATE TABLE [dbo].#tableinfo( 表名 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL, 记录数 [int] NULL, 预留空间 ...
- .net_ckeditor+ckfinder的图片上传配置
CKEditor和CKFinder的最新版可以到官方网站(http://cksource.com)上下载获得. 把以上两个资源放到网站的根目录: /CKEditor 和 /CKFinder (不区分大 ...
- android 开发 - 对图片进行虚化(毛玻璃效果,模糊)
概述 IPAD,IPHONE上首页背景的模糊效果是不是很好看,那么在 Android中如何实现呢.我通过一种方式实现了这样的效果. 开源库名称:anroid-image-blur 一个android ...
- 搬家至个人独立博客virson.cn
最近正在将博客园的文章搬到自己的独立博客,以后基本上不会在博客园更新文章了,欢迎光临我的新博客:www.virson.cn,博客内容持续更新中……