一、什么是Dapper?
Dapper是一款轻量级Orm框架,它是属于半自动的,它和Entity Framework和NHibernate不同,它只有一个单文件,没有很复杂的配置,如果你喜欢原生Sql语句,而且又是喜欢Orm框架,那么Dapper对于你来说是再适合不过了。
二、Dapper优点
我也是刚开始学习Dapper,让我自己去总结它的优点,可能也就还没真正去体验到带来的好。所以我也是抱着学习的态度,去参考一些大佬给它总结的优点:
1、轻量级、单文件。
2、支持多数据,而且性能优越。
3、Dapper原理通过Emit反射IDataReader的序列队列,来快速的得到和产生对象。
三:具体事例代码实现
1:添加引用,我们需要在我们项目中添加Dapper Nuget包,然后点击安装就可以了。
2:配置连接数据库方式:跟ADO.net差不多
获取配置文件的链接数据库字符串
通用类
public class ConfigurationUtil
{
/// <summary>
/// 获取AppSettings 值
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static string GetValue(string key)
{
return ConfigurationManager.AppSettings.Get(key);
}
/// <summary>
/// 获取ConnectionString
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static string GetConnValue(string key)
{
return ConfigurationManager.ConnectionStrings[key].ConnectionString;
}
}
获取配置文件的链接数据库字符串
private static readonly string _ConnStr = ConfigurationUtil.GetConnValue("ConnStr");
protected SqlConnection GetYiBonSqlConnection() { return new SqlConnection(_ConnStr); }
//查询方法 查询所有数据
public List<YiBonHotelMapEntity> QueryFokasList()
{
List<YiBonHotelMapEntity> list = null;
string sql = @"select [FokasID]
,[ActivityID]
,[FokasName]
,[FokasCount]
,[Probability]
,[UseCount]
,[OrderNum]
,[IsAdequate]
,[PrizeLevel]
,[ValidityStartTime]
,[ValidityEndTime]
,[Disabled]
,[CreateTime] from [AC_Fokas] WITH(NOLOCK) ";
using (var conn = GetYiBonSqlConnection())
{
list = conn.Query<YiBonHotelMapEntity>(sql).ToList();
conn.Dispose();
}
return list;
}
// 带 条件 查询
public List<YiBonHotelMapEntity> QueryFokas(string FokasID)
{
List<YiBonHotelMapEntity> list = null;
string sql = @"SELECT [FokasID]
,[ActivityID]
,[FokasName]
,[FokasCount]
,[Probability]
,[UseCount]
,[OrderNum]
,[IsAdequate]
,[PrizeLevel]
,[ValidityStartTime]
,[ValidityEndTime]
,[Disabled]
,[CreateTime] from [AC_Fokas] WITH(NOLOCK) WHERE FokasID = @FokasID ";
using (var conn = GetYiBonSqlConnection())
{
list = conn.Query<YiBonHotelMapEntity>(sql, new { FokasID = FokasID }).ToList();
conn.Dispose();
}
return list;
}
// 新增
public int intserFokas(List<YiBonHotelMapEntity> entities)
{
int rows = 0;
string sql = @"INSERT INTO [AC_Fokas](
[ActivityID]
,[FokasName]
,[FokasCount]
,[Probability]
,[UseCount]
,[OrderNum]
,[IsAdequate]
,[PrizeLevel]
,[ValidityStartTime]
,[ValidityEndTime]
,[Disabled]
,[CreateTime])
VALUES(@ActivityID,@FokasName,@FokasCount,@Probability,@UseCount,@OrderNum,@IsAdequate,@PrizeLevel,@ValidityStartTime,@ValidityEndTime,@Disabled,@CreateTime)";
using (var conn = GetYiBonSqlConnection())
{
conn.Open();
IDbTransaction trans = conn.BeginTransaction();
try
{
rows = conn.Execute(sql, entities.ToArray(), trans);
trans.Commit();
}
catch (Exception ex)
{
rows = 0;
trans.Rollback();
throw;
}
finally
{
if (trans != null)
trans.Dispose();
if (conn != null)
conn.Dispose();
}
}
return rows;
}
// 修改
public int updateFokas(YiBonHotelMapEntity entities)
{
int rows = 0;
string sql = sql = "UPDATE dbo.[AC_Fokas] SET FokasName = @FokasName,ModifyTime = GETDATE(),ActivityID=@ActivityID WHERE FokasID = @FokasID"; ;
using (var conn = GetYiBonSqlConnection())
{
rows = conn.Execute(sql, entities);
conn.Dispose();
}
return rows;
}
/// 用string参数修改
public int UpdateBookRoom(string FokasName, string FokasID)
{
int rows = 0;
string sql = sql = "UPDATE dbo.[AC_Fokas] SET FokasName = @FokasName,ModifyTime = GETDATE() WHERE FokasID = @FokasID"; ;
using (var conn = GetYiBonSqlConnection())
{
rows = conn.Execute(sql, new { FokasName = FokasName, FokasID = FokasID });
conn.Dispose();
}
return rows;
}
/// 删除
public int DeleteBookRoom(string FokasID)
{
int rows = 0;
string sql = sql = "delete dbo.[AC_Fokas] WHERE FokasID = @FokasID"; ;
using (var conn = GetYiBonSqlConnection())
{
rows = conn.Execute(sql, new { FokasID = FokasID });
conn.Dispose();
}
return rows;
}