在asp.net core中使用Dapper进行数据库管理
准备工作
一个接口一个类(数据库管理类)
publicinterfaceDBInterface{IDbConnectionGetConnection();IEnumerable<T>Query<T>(stringsql,objectparam=null,IDbTransactiontransaction=null,boolbuffered=true,int?commandTimeout=null,CommandType?commandType=null);intExecute(stringsql,objectparam=null,IDbTransactiontransaction=null,int?commandTimeout=null,CommandType?commandType=null);}
publicclassDB:DBInterface{IDbConnection_dbConnection;publicDB(IDbConnectiondbConnection,stringconnectionString){_dbConnection=dbConnection;_dbConnection.ConnectionString=connectionString;}///<summary>///连接对象///</summary>///<returns></returns>publicIDbConnectionGetConnection(){return_dbConnection;}///<summary>///查询方法///</summary>///<typeparamname="T">映射实体类</typeparam>///<paramname="sql">sql语句</param>///<paramname="param">参数对象</param>///<paramname="transaction">事务</param>///<paramname="buffered">是否缓存结果</param>///<paramname="commandTimeout">command超时时间(秒)</param>///<paramname="commandType">command类型</param>///<returns></returns>publicIEnumerable<T>Query<T>(stringsql,objectparam=null,IDbTransactiontransaction=null,boolbuffered=true,int?commandTimeout=null,CommandType?commandType=null){return_dbConnection.Query<T>(sql,param,transaction,buffered,commandTimeout,commandType);}///<summary>///执行方法///</summary>///<paramname="sql">映射实体类</param>///<paramname="param">参数对象</param>///<paramname="transaction">事务</param>///<paramname="commandTimeout">command超时时间(秒)</param>///<paramname="commandType">command类型</param>///<returns></returns>publicintExecute(stringsql,objectparam=null,IDbTransactiontransaction=null,int?commandTimeout=null,CommandType?commandType=null){return_dbConnection.Execute(sql,param,transaction,commandTimeout,commandType);}}
数据库管理接口和类都已经准备好,接下来就是注入进去才能进行使用
//sqlite连接字符串varconnectionString=string.Format("DataSource={0}/db.sqlite",System.IO.Directory.GetCurrentDirectory());//将数据库连接字符串注入进去services.AddSingleton(connectionString);//sqlieconnection注放services.AddScoped<IDbConnection,SqliteConnection>();//注放数据库services.AddScoped<INetOADB,NetOADB>();
使用
用户实体类
///<summary>///用户实体类///</summary>publicclassUser{///<summary>///ID///</summary>publicintID{get;set;}///<summary>///用户名///</summary>publicstringUserName{get;set;}///<summary>///密码///</summary>publicstringPassword{get;set;}publicInt64Phone{get;set;}///<summary>///用户名称///</summary>publicstringName{get;set;}///<summary>///角色ID///</summary>publicintRoleID{get;set;}///<summary>///部门编号///</summary>publicintDepartmentID{get;set;}}
用户管理接口
publicinterfaceIUserRepository{///<summary>///登录///</summary>///<paramname="userName">用户名</param>///<paramname="password">密码</param>///<returns></returns>UserRoleLogin(stringuserName,stringpassword);}
用户管理接口实现
publicclassUserRepository:IUserRepository{///<summary>///数据库对象///</summary>DBInterface_db;publicUserRepository(DBInterfacedb){_db=db;}///<summary>///登录///</summary>///<paramname="userName">用户名</param>///<paramname="password">密码</param>///<returns></returns>publicUserRoleLogin(stringuserName,stringpassword){stringsql="select"+"users.*,roles.rolename"+"fromusersjoinrolesonusers.roleid=roles.id"+"whereusername=@usernameandpassword=@password";varuserRole=_db.Query<UserRole>(sql,new{username=userName,password=password}).SingleOrDefault();if(userRole==null){thrownewException("用户名或密码错误!");}else{returnuserRole;}}}
控制器中使用
///<summary>///登录接口///</summary>///<paramname="userName"></param>///<paramname="password"></param>///<paramname="returnUrl"></param>///<returns></returns>//[HttpPost]publicIActionResultLogin(stringuserName,stringpassword){try{varuserRole=_userRepository.Login(userName,password);varBuildToken=Token.BuildToken(newDictionary<string,object>{{"userid",userRole.ID},{"username",userRole.Name},{"phone",userRole.Phone}});HttpContext.Session.SetString("token",BuildToken);returnbackFun.success(Msg:"登录成功",Data:new{token=BuildToken,userId=userRole.ID,userInfo=userRole});}catch(Exceptionex){returnbackFun.error(Msg:ex.Message);}}
写到这里基本上跟都已经搞定,虽然有些不完善,但是asp.net cor和dapper的接口使用流程与方法做了简单的使用和介绍,不完善的地方需要留给您来完善,不完整的地方需要你自己去完整他,不动脑怎么成长,不动手怎么去验证刘成刚是否正确。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。