Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class GenericDapperSqlRepository
- {
- private string _TableName;
- private string _connectionString;
- public GenericDapperSqlRepository(string tableName, string connectionString)
- {
- _TableName = tableName;
- _connectionString = connectionString;
- }
- protected IDbConnection Connection
- {
- get
- {
- return new SqlConnection(_connectionString);
- }
- }
- public int Insert(object dynamicParameters)
- {
- string insertSql = BuildInsertSql(dynamicParameters, _TableName);
- if (string.IsNullOrWhiteSpace(insertSql))
- return -1;
- int id = Query<int>(insertSql, dynamicParameters, x => x.Id)
- .Single();
- return id;
- }
- public IEnumerable<T> GetAll<T>(string columns, Func<dynamic, T> mapFromDynamic)
- {
- var results = Query($"SELECT {columns} FROM " + _TableName, null, mapFromDynamic);
- return results;
- }
- public IEnumerable<T> Query<T>(string query, object parameters, Func<dynamic, T> mapFromDynamic)
- {
- using (IDbConnection cn = Connection)
- {
- cn.Open();
- var results = cn.Query(query, parameters)
- .Select(x => (T)mapFromDynamic(x));
- return results;
- }
- }
- public T GetById<T>(int id, Func<dynamic, T> mapFromDymamic)
- {
- var result = Query($"SELECT * FROM {_TableName} WHERE Id={id}", null, mapFromDymamic)
- .SingleOrDefault();
- return result;
- }
- public void Update(int id, object parameters)
- {
- using (IDbConnection cn = Connection)
- {
- cn.Open();
- string updateSql = BuildUpdateSql(id, parameters, _TableName);
- if (string.IsNullOrWhiteSpace(updateSql))
- return;
- cn.Execute(updateSql, parameters);
- }
- }
- public void Delete(int id)
- {
- using (IDbConnection cn = Connection)
- {
- cn.Open();
- cn.Execute($"DELETE FROM {_TableName} WHERE Id={id}");
- }
- }
- internal static string BuildUpdateSql(int id, object parameters, string tableName)
- {
- var properties = parameters.GetType().GetProperties().Select(x => x.Name);
- var setters = string.Join(",", properties.Select(x => $"{x}=@{x}"));
- if (string.IsNullOrWhiteSpace(setters))
- return "";
- string insertSql = $"UPDATE {tableName} SET {setters} WHERE Id={id}";
- return insertSql;
- }
- internal static string BuildInsertSql(object parameters, string tableName)
- {
- var properties = parameters.GetType().GetProperties().Select(x => x.Name);
- var names = string.Join(",", properties);
- var values = string.Join(",", properties.Select(x => "@" + x));
- if (string.IsNullOrWhiteSpace(names))
- return "";
- string insertSql = $"INSERT INTO {tableName} ({names}) OUTPUT inserted.Id VALUES ({values})";
- return insertSql;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement