From 7b3776f27f0b5cd40196332f23b910ae8b37456d Mon Sep 17 00:00:00 2001 From: Tudor Stanciu Date: Sun, 12 Apr 2020 05:53:03 +0300 Subject: [PATCH] NDB.DataAccess.SqlServer --- NDB.DataAccess.SqlServer/BaseDataAccess.cs | 167 ++++++++++++++++++ .../NDB.DataAccess.SqlServer.csproj | 11 ++ NDB.sln | 8 +- 3 files changed, 185 insertions(+), 1 deletion(-) create mode 100644 NDB.DataAccess.SqlServer/BaseDataAccess.cs create mode 100644 NDB.DataAccess.SqlServer/NDB.DataAccess.SqlServer.csproj diff --git a/NDB.DataAccess.SqlServer/BaseDataAccess.cs b/NDB.DataAccess.SqlServer/BaseDataAccess.cs new file mode 100644 index 0000000..ed38f4d --- /dev/null +++ b/NDB.DataAccess.SqlServer/BaseDataAccess.cs @@ -0,0 +1,167 @@ +using System; +using System.Data; +using System.Data.SqlClient; + +namespace NDB.DataAccess.SqlServer +{ + public abstract class BaseDataAccess + { + #region Fields + private string ConnectionString { get; set; } + #endregion + + protected BaseDataAccess(string connectionString) + { + ConnectionString = connectionString; + } + + #region Properties + public SqlConnection Connection { get; private set; } = null; + public SqlTransaction Transaction { get; private set; } = null; + public SqlCommand Command { get; private set; } = null; + #endregion + + #region Methods + #region OpenConnection + public void OpenConnection(string connStr = null) + { + Connection = new SqlConnection(connStr ?? ConnectionString); + Connection.Open(); + } + #endregion + + #region OpenConnection + public void CloseConnection() + { + Connection.Close(); + } + #endregion + + #region OpenTransaction + public void OpenTransaction() + { + Transaction = Connection.BeginTransaction(); + } + #endregion + + #region OpenConnectionWithTransaction + public void OpenConnectionWithTransaction() + { + OpenConnection(); + OpenTransaction(); + } + #endregion + + #region Rollback + public void Rollback() + { + CheckTransaction(); + if (Transaction.Connection == null) + return; + + Transaction.Rollback(); + } + + private void CheckTransaction() + { + if (Transaction == null) + throw new Exception("No open transaction found!"); + } + #endregion + + #region Commit + public void Commit() + { + CheckTransaction(); + if (Transaction.Connection == null) + return; + + Transaction.Commit(); + } + #endregion + + #region CreateCommand + public void CreateCommand() + { + Command = new SqlCommand + { + Connection = Connection + }; + + if (Transaction != null) + Command.Transaction = Transaction; + } + + public void CreateCommand(CommandType commandType) + { + CreateCommand(); + Command.CommandType = commandType; + } + + public void CreateCommand(CommandType commandType, string commandText) + { + CreateCommand(commandType); + Command.CommandText = commandText; + } + #endregion + + #region GetDbValue + protected T GetDbValue(object obj) + { + if (obj != DBNull.Value && obj != null) + return (T)obj; + return default(T); + } + + protected T GetDbValue(IDataReader dr, string columnName) + { + if (dr[columnName] != DBNull.Value && dr[columnName] != null) + return (T)dr[columnName]; + + return default(T); + } + #endregion + + #region GetParamValue + protected T GetParamValue(string parameterName) + { + object obj = (Command.Parameters[parameterName]).Value; + if (obj != DBNull.Value && obj != null) + return (T)obj; + + return default(T); + } + #endregion + + #region AddParameterToCommand + protected void AddParameterToCommand(string parameterName, ParameterDirection direction, DbType dbType, object value, int size = int.MinValue) + { + var param = Command.CreateParameter(); + param.ParameterName = parameterName; + param.Direction = direction; + param.DbType = dbType; + + if (value == null || value == DBNull.Value) + param.Value = DBNull.Value; + else + param.Value = value; + + if (size != int.MinValue) + param.Size = size; + + Command.Parameters.Add(param); + } + + protected void AddParameterToCommand(string parameterName, ParameterDirection direction, DbType dbType) + { + var param = Command.CreateParameter(); + param.ParameterName = parameterName; + param.Direction = direction; + param.DbType = dbType; + + Command.Parameters.Add(param); + } + #endregion + #endregion + } +} diff --git a/NDB.DataAccess.SqlServer/NDB.DataAccess.SqlServer.csproj b/NDB.DataAccess.SqlServer/NDB.DataAccess.SqlServer.csproj new file mode 100644 index 0000000..b598e6e --- /dev/null +++ b/NDB.DataAccess.SqlServer/NDB.DataAccess.SqlServer.csproj @@ -0,0 +1,11 @@ + + + + netstandard2.0 + + + + + + + diff --git a/NDB.sln b/NDB.sln index efdc679..0619beb 100644 --- a/NDB.sln +++ b/NDB.sln @@ -17,7 +17,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NDB.Infrastructure.PublicIP EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NDB.Testing.App", "NDB.Testing.App\NDB.Testing.App.csproj", "{656CCE38-90C3-4D19-9D07-EF1F0410CFDC}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NDB.Logging.Api", "NDB.Logging.Api\NDB.Logging.Api.csproj", "{74E221BE-C097-468B-93E4-AAE1B2173C49}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NDB.Logging.Api", "NDB.Logging.Api\NDB.Logging.Api.csproj", "{74E221BE-C097-468B-93E4-AAE1B2173C49}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NDB.DataAccess.SqlServer", "NDB.DataAccess.SqlServer\NDB.DataAccess.SqlServer.csproj", "{95AF4B47-2C84-44C1-BD25-297F09A48BED}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -41,6 +43,10 @@ Global {74E221BE-C097-468B-93E4-AAE1B2173C49}.Debug|Any CPU.Build.0 = Debug|Any CPU {74E221BE-C097-468B-93E4-AAE1B2173C49}.Release|Any CPU.ActiveCfg = Release|Any CPU {74E221BE-C097-468B-93E4-AAE1B2173C49}.Release|Any CPU.Build.0 = Release|Any CPU + {95AF4B47-2C84-44C1-BD25-297F09A48BED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {95AF4B47-2C84-44C1-BD25-297F09A48BED}.Debug|Any CPU.Build.0 = Debug|Any CPU + {95AF4B47-2C84-44C1-BD25-297F09A48BED}.Release|Any CPU.ActiveCfg = Release|Any CPU + {95AF4B47-2C84-44C1-BD25-297F09A48BED}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE