Advertisement
Guest User

Untitled

a guest
Jan 17th, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.27 KB | None | 0 0
  1. public class GenericDapperSqlRepository
  2. {
  3. private string _TableName;
  4. private string _connectionString;
  5.  
  6. public GenericDapperSqlRepository(string tableName, string connectionString)
  7. {
  8. _TableName = tableName;
  9. _connectionString = connectionString;
  10. }
  11.  
  12. protected IDbConnection Connection
  13. {
  14. get
  15. {
  16. return new SqlConnection(_connectionString);
  17. }
  18. }
  19. public int Insert(object dynamicParameters)
  20. {
  21. string insertSql = BuildInsertSql(dynamicParameters, _TableName);
  22.  
  23. if (string.IsNullOrWhiteSpace(insertSql))
  24. return -1;
  25.  
  26. int id = Query<int>(insertSql, dynamicParameters, x => x.Id)
  27. .Single();
  28.  
  29. return id;
  30. }
  31.  
  32. public IEnumerable<T> GetAll<T>(string columns, Func<dynamic, T> mapFromDynamic)
  33. {
  34. var results = Query($"SELECT {columns} FROM " + _TableName, null, mapFromDynamic);
  35. return results;
  36. }
  37.  
  38. public IEnumerable<T> Query<T>(string query, object parameters, Func<dynamic, T> mapFromDynamic)
  39. {
  40. using (IDbConnection cn = Connection)
  41. {
  42. cn.Open();
  43. var results = cn.Query(query, parameters)
  44. .Select(x => (T)mapFromDynamic(x));
  45.  
  46. return results;
  47. }
  48. }
  49. public T GetById<T>(int id, Func<dynamic, T> mapFromDymamic)
  50. {
  51. var result = Query($"SELECT * FROM {_TableName} WHERE Id={id}", null, mapFromDymamic)
  52. .SingleOrDefault();
  53.  
  54. return result;
  55. }
  56.  
  57. public void Update(int id, object parameters)
  58. {
  59. using (IDbConnection cn = Connection)
  60. {
  61. cn.Open();
  62. string updateSql = BuildUpdateSql(id, parameters, _TableName);
  63.  
  64. if (string.IsNullOrWhiteSpace(updateSql))
  65. return;
  66.  
  67. cn.Execute(updateSql, parameters);
  68. }
  69. }
  70.  
  71. public void Delete(int id)
  72. {
  73. using (IDbConnection cn = Connection)
  74. {
  75. cn.Open();
  76. cn.Execute($"DELETE FROM {_TableName} WHERE Id={id}");
  77. }
  78. }
  79. internal static string BuildUpdateSql(int id, object parameters, string tableName)
  80. {
  81. var properties = parameters.GetType().GetProperties().Select(x => x.Name);
  82. var setters = string.Join(",", properties.Select(x => $"{x}=@{x}"));
  83.  
  84. if (string.IsNullOrWhiteSpace(setters))
  85. return "";
  86.  
  87. string insertSql = $"UPDATE {tableName} SET {setters} WHERE Id={id}";
  88. return insertSql;
  89. }
  90.  
  91. internal static string BuildInsertSql(object parameters, string tableName)
  92. {
  93. var properties = parameters.GetType().GetProperties().Select(x => x.Name);
  94. var names = string.Join(",", properties);
  95. var values = string.Join(",", properties.Select(x => "@" + x));
  96.  
  97. if (string.IsNullOrWhiteSpace(names))
  98. return "";
  99.  
  100. string insertSql = $"INSERT INTO {tableName} ({names}) OUTPUT inserted.Id VALUES ({values})";
  101. return insertSql;
  102. }
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement