存储过程分页 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 ...
随机推荐
- IPv6正则表达式
斯蒂芬·瑞恩写了一个非常有用的正则表达式,可用于匹配任何一个合法的IPv6地址.以下为正则表达式的代码: ^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|: ...
- TargetProcess公司敏捷开发历程-开发实践篇
- <《基金经理投资笔记丛书4-1:投资是一种生活方式》>
在中国股市每年能获得10%的收益已经是非常好了,但问题是大多数股民不认为这是一个很高的收益水平,尽管现实中大多数股民的收益状况比这要差很多. 投资中一个重要的心理陷阱是过度自信,过度自信的一个主要表现 ...
- 数据库中字段类型对应的C#中的数据类型
数据库中字段类型对应C#中的数据类型: 数据库 C#程序 int int32 text string bigint int64 binary System.Byte[] ...
- jQuery Mobile 移动开发中的日期插件Mobiscroll使用说明
近期在移动方面的开发,使用jQuery Mobile ,移动方面的插件不如Web 方面的插件多,选择的更少,有一些需要自己去封装,但功力尚不足啊. 日期插件JQM也提供了内置的,但样式方面不好看,只好 ...
- ubuntu 下安装 lxml 失败
/tmp/pip-build-7HN4t8/lxml/src/lxml/includes/etree_defs.h:14:31: fatal error: libxml/xmlversion.h: N ...
- sql server trace 和 Profiler
MS SQL Server Profiler概述: MS SQL Server Profiler是SQL Trace的GUI接口,提供对SQL Server Database Engine ...
- 几种图片下载lib对比
- WindowsServer2012桌面图标设置
1.win+R调出运行窗口 2.输入:rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0 即可
- ecslipe cdt lib link
项目属性-> settings -> mingw c linker 1.libs search 填写lib路径 2.lib 填写文件名,不要后缀