Dapper结合Repository模式的应用

摘要:
Dapper结合Repository模式的应用,包括如何在数据访问层使用Dapper组件。privatestaticreadonlystringConnectionString=ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();///得到工厂提供器类型privatestaticreadonlystringProviderFactoryString=ConfigurationManager.AppSettings["DBProvider"].ToString();privatestaticDbProviderFactorydf=null;//////创建工厂提供器并且///publicstaticIDbConnectionDbService(){ifdf=DbProviderFactories.GetFactory;varconnection=df.CreateConnection();connection.ConnectionString=ConnectionString;connection.Open();returnconnection;}}2)app.config配置[html]viewplaincopy˂?
Dapper结合Repository模式的应用,包括如何在数据访问层(DAL)使用Dapper组件。

Dapper在真实项目中使用,扩展IDbConnection的功能,支持Oracle、MS SQL Server 2005数据库

1)定义统一的IDbConnection访问入口

  1. publicclassDatabase
  2. {
  3. ///得到web.config里配置项的数据库连接字符串。
  4. privatestaticreadonlystringConnectionString=ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
  5. ///得到工厂提供器类型
  6. privatestaticreadonlystringProviderFactoryString=ConfigurationManager.AppSettings["DBProvider"].ToString();
  7. privatestaticDbProviderFactorydf=null;
  8. ///<summary>
  9. ///创建工厂提供器并且
  10. ///</summary>
  11. publicstaticIDbConnectionDbService()
  12. {
  13. if(df==null)
  14. df=DbProviderFactories.GetFactory(ProviderFactoryString);
  15. varconnection=df.CreateConnection();
  16. connection.ConnectionString=ConnectionString;
  17. connection.Open();
  18. returnconnection;
  19. }
  20. }

2)app.config配置

  1. <?xmlversion="1.0"?>
  2. <configuration>
  3. <configSections>
  4. </configSections>
  5. <appSettings>
  6. <addkey="DBProvider"value="System.Data.SqlClient"/>
  7. </appSettings>
  8. <connectionStrings>
  9. <addname="ConnectionString"connectionString="DataSource=.;InitialCatalog=PlanDb;UserID=sa;Password=manager;"providerName="System.Data.SqlClient"/>
  10. </connectionStrings>
  11. <startup>
  12. <supportedRuntimeversion="v4.0"sku=".NETFramework,Version=v4.0"/>
  13. </startup>
  14. </configuration>

3)Repository模式实现

  1. ///<summary>
  2. ///产品管理
  3. ///</summary>
  4. publicclassProductRepository
  5. {
  6. publicstaticProductGetById(intid)
  7. {
  8. varsqlstr="select*fromdbo.ProductwhereProduct_ID=@id";
  9. using(varconn=Database.DbService())
  10. {
  11. returnconn.Query<Product>(sqlstr,new{id}).Single();
  12. }
  13. }
  14. publicstaticList<Product>GetByPid(intpid)
  15. {
  16. varsqlstr="select*fromdbo.ProductwhereParent_ID=@pidorderbyProduct_no";
  17. using(varconn=Database.DbService())
  18. {
  19. returnconn.Query<Product>(sqlstr,new{pid}).ToList();
  20. }
  21. }
  22. ///<summary>
  23. ///获取所有产品--机型
  24. ///</summary>
  25. ///<returns></returns>
  26. publicstaticList<Product>GetAllTop()
  27. {
  28. varsqlstr="select*fromdbo.ProductwhereParent_ID=0orderbyProduct_no";
  29. using(varconn=Database.DbService())
  30. {
  31. returnconn.Query<Product>(sqlstr).ToList();
  32. }
  33. }
  34. publicstaticvoidInsert(Productmodel)
  35. {
  36. if(model.Product_ID==0)
  37. model.Product_ID=NextId;
  38. stringsqlstr="INSERTINTOdbo.Product"+
  39. "(Product_ID,Parent_ID,Product_No,Product_Name,Product_Type,Remark,Creater,Create_Date,Data_Availability)"+
  40. "values(@Product_ID,@Parent_ID,@Product_No,@Product_Name,@Product_Type,@Remark,@Creater,@Create_Date,@Data_Availability)";
  41. using(varconn=Database.DbService())
  42. {
  43. conn.Execute(sqlstr,model);
  44. }
  45. }
  46. publicstaticvoidDelete(intid)
  47. {
  48. varsqlstr="deletefromdbo.ProductwhereProduct_ID=@id";
  49. using(varconn=Database.DbService())
  50. {
  51. conn.Execute(sqlstr,new{id});
  52. }
  53. }
  54. publicstaticvoidUpdate(Productmodel)
  55. {
  56. stringsqlstr="UPDATEdbo.Product"+
  57. "SETProduct_No=@Product_No,"+
  58. "Product_Name=@Product_Name,"+
  59. "Product_Type=@Product_Type,"+
  60. "Remark=@Remark"+
  61. "WHEREProduct_ID=@Product_ID";
  62. using(varconn=Database.DbService())
  63. {
  64. conn.Execute(sqlstr,model);
  65. }
  66. }
  67. ///<summary>
  68. ///下一个ID
  69. ///</summary>
  70. publicstaticintNextId
  71. {
  72. get
  73. {
  74. returnDatabase.NextId("Product");
  75. }
  76. }
  77. publicstaticboolExists(stringno)
  78. {
  79. varsqlstr="selectcount(*)fromdbo.ProductwhereProduct_No=@no";
  80. using(varconn=Database.DbService())
  81. {
  82. returnconn.Query<int>(sqlstr,new{no}).Single()>0;
  83. }
  84. }
  85. }

http://blog.csdn.net/dacong转载请注明出处

  1. publicclassProduct
  2. {
  3. #regionFields
  4. privateint_product_id;
  5. privateint_parent_id;
  6. privatestring_product_no="";
  7. privatestring_product_name="";
  8. privatestring_product_type="";
  9. privatestring_remark="";
  10. privatestring_creater="";
  11. privateDateTime_create_date;
  12. privatestring_data_availability="";
  13. #endregion
  14. publicProduct()
  15. {
  16. _parent_id=0;
  17. _data_availability="Y";
  18. }
  19. #regionPublicProperties
  20. publicintProduct_ID
  21. {
  22. get{return_product_id;}
  23. set
  24. {
  25. _product_id=value;
  26. }
  27. }
  28. ///<summary>
  29. ///父产品ID,0为最顶层产品
  30. ///</summary>
  31. publicintParent_ID
  32. {
  33. get{return_parent_id;}
  34. set
  35. {
  36. _parent_id=value;
  37. }
  38. }
  39. publicstringProduct_No
  40. {
  41. get{return_product_no;}
  42. set
  43. {
  44. _product_no=value;
  45. }
  46. }
  47. publicstringProduct_Name
  48. {
  49. get{return_product_name;}
  50. set
  51. {
  52. _product_name=value;
  53. }
  54. }
  55. publicstringProduct_Type
  56. {
  57. get{return_product_type;}
  58. set
  59. {
  60. _product_type=value;
  61. }
  62. }
  63. publicstringRemark
  64. {
  65. get{return_remark;}
  66. set
  67. {
  68. _remark=value;
  69. }
  70. }
  71. publicstringCreater
  72. {
  73. get{return_creater;}
  74. set
  75. {
  76. _creater=value;
  77. }
  78. }
  79. publicDateTimeCreate_Date
  80. {
  81. get{return_create_date;}
  82. set
  83. {
  84. _create_date=value;
  85. }
  86. }
  87. publicstringData_Availability
  88. {
  89. get{return_data_availability;}
  90. set
  91. {
  92. _data_availability=value;
  93. }
  94. }
  95. #endregion
  96. }
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dacong/article/details/7300046

免责声明:文章转载自《Dapper结合Repository模式的应用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Chromium 修改图片资源访问localhost的phpmyadmin出现访问被拒绝下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

.NET 轻量级 ORM 框架

转自:https://blog.csdn.net/hanjun0612/article/details/52170204 Dapper简单介绍: Dapper is a single file you can drop in to your project that will extend your IDbConnection interface. Dap...

Dapper多表查询时子表字段为空

最近在学习使用Dapper时百度了一篇详细使用教程,在做到多表查询的时候,出现如下情况。 使用的SQL如下, SELECT * FROM [Student] AS A INNER JOIN [Junior] AS B ON B.ID=A.JuniorId 随后以为是自己写错了,查了好多地方没有找到原因。后来找了大神一线码农的关于Dapper的文章中提到了...

Dapper完美兼容Oracle,执行存储过程,并返回结果集。

Dapper完美兼容Oracle,执行存储过程,并返回结果集。 这个问题,困扰了我整整两天。 刚刚用到Dapper的时候,感觉非常牛掰。特别是配合.net 4.0新特性dynamic,让我生成泛型集合,再转json一气呵成。 不过,各种ORM总有让人吐槽的地方。。。 比如,我之前在SqlServer上写测试,搞封装,没有任何问题。CURD、批量操作、存储过...

Dapper 基础用法

Dapper是.Net下的一个简单orm框架,具有以下特点: 1、简单,只需要一个文件即可(SqlMapper.cs) 2、快速,下面是一个查询结果集在500以上的运行速度对比 3、不要求特定的db provider,即不论是sqlite, sqlce, firebird, oracle, MySQL 还是 SQL Server,都能使用它。 项目的gi...

Dapper进行增删改查 z

http://www.cnblogs.com/huangkaiyan10/p/4640548.html 项目背景      前一段时间,开始做一个项目,在考虑数据访问层是考虑技术选型,考虑过原始的ADO.NET、微软的EF、NH等。再跟经理讨论后,经理强调不要用 Ef,NH做ORM,后期的sql优化不好做,公司也没有人对EF,Nh 等orm优化比较熟悉的。...

【原创】打造基于Dapper的数据访问层

前言 闲来无事,花几天功夫将之前项目里用到的一个数据访问层整理了出来。实现单个实体的增删改查,可执行存储过程,可输出返回参数,查询结果集可根据实际情况返回DataTable、DataSet和强类型,同时支持不同类型数据库。目前成熟的ORM框架多不胜数,虽然有种重复造轮子的感觉,但相信朋友们和我一样,享受造轮子的过程并把它当成一种乐趣,对吧。 调用示例 1、...