搭建DbFirst框架

一,在dal层新建项 ADO.NET实体数据模型(选择来自数据库的EF设计器)

EF(DbFirst) 存储过程基本用法_sql

二,新建连接(选择要使用的数据库)

EF(DbFirst) 存储过程基本用法_Sql Server_02

三,勾选自己要使用的表 点击完成即可(自动将上下文和Model创建好)

EF(DbFirst) 存储过程基本用法_存储过程_03

 

EF调用存储过程

一,使用方法 代码 (方便回忆)

public List<UserInfo> PageShow(string uname,int pageIndex ,int pageSize,out int totalCount,out int pageCount)
      {
          SqlParameter[] sqls =
          {
              new SqlParameter("@pageIndex",pageIndex),
              new SqlParameter("@pageSize",pageSize),
              new SqlParameter("@uname",uname),
              new SqlParameter("@totalCount",System.Data.SqlDbType.Int),
              new SqlParameter("@pageCount",System.Data.SqlDbType.Int),
          };
          sqls[3].Direction = System.Data.ParameterDirection.Output;
          sqls[4].Direction = System.Data.ParameterDirection.Output;
          var list = db.Database.SqlQuery<UserInfo>("exec P_Show @pageIndex, @pageSize, @uname ,@totalCount out ,@pageCount out", sqls).ToList();

          totalCount = (int)sqls[3].Value;
          pageCount = (int)sqls[4].Value;

          return list;
      }

 存储过程

一,SQL SERVER存储过程基本代码(方便回忆)

--删除存储过程
drop proc P_Show

--创建存储过程
create proc P_Show
(
    @pageIndex int,
    @pageSize int,
    @uname nvarchar(20),
    @totalCount int out,
    @totalPage int out
)
as
begin
    declare @sql nvarchar(max)='select * from UserInfo where 1=1'
    declare @sqlCount nvarchar(max)='select @totalCount=count(*) from UserInfo where 1=1'
    --添加条件
    if(@uname!=null)
    begin
        set @sql += 'and uname like ''%'+@uname+'%'''
        set @sqlCount += 'and uname like ''%'+@uname+'%'''
    end
    set @sql += 'order by UserInfo.UId offset (@pageIndex-1)*@pageSize rows fetch next @pageSize rows only'
    exec sp_executesql @sql,N'@pageIndex int,@pageSize int',@pageIndex,@pageSize
    exec sp_executesql @sqlCount,N'@totalCount int out',@totalCount out
    set @totalPage = ceiling(@totalCount*1.0/@pageSize)
end

declare @a int ,@b int
exec P_Show 1,3,'',@a out,@b out
select @a,@b