diff --git a/ACUtils.SqlDb.Utils/ACUtils.SqlDb.Utils.csproj b/ACUtils.SqlDb.Utils/ACUtils.SqlDb.Utils.csproj
index 70a177c..08d2726 100644
--- a/ACUtils.SqlDb.Utils/ACUtils.SqlDb.Utils.csproj
+++ b/ACUtils.SqlDb.Utils/ACUtils.SqlDb.Utils.csproj
@@ -4,8 +4,8 @@
Andrea Cattaneo
true
false
- 1.0.0.142
- 1.0.0.142
+ 1.0.0.143
+ 1.0.0.143
Utilities per gestione DataTable
it
true
diff --git a/ACUtils.SqlDb.Utils/DbFieldAttribute.cs b/ACUtils.SqlDb.Utils/DbFieldAttribute.cs
index 17aaa2f..f99d0f9 100644
--- a/ACUtils.SqlDb.Utils/DbFieldAttribute.cs
+++ b/ACUtils.SqlDb.Utils/DbFieldAttribute.cs
@@ -2,7 +2,7 @@
{
public class DbFieldAttribute : System.Attribute, IDbFieldAttribute
{
- public string DbField { get; }
+ public string DbField { get; protected set; }
public DbFieldAttribute(string db_field = null)
{
diff --git a/ACUtils.SqlDb/ACUtils.SqlDb.csproj b/ACUtils.SqlDb/ACUtils.SqlDb.csproj
index 1f6b4de..79d8a2e 100644
--- a/ACUtils.SqlDb/ACUtils.SqlDb.csproj
+++ b/ACUtils.SqlDb/ACUtils.SqlDb.csproj
@@ -5,8 +5,8 @@
Andrea Cattaneo
true
false
- 1.0.0.142
- 1.0.0.142
+ 1.0.0.143
+ 1.0.0.143
Utility per interrogazione database MSSQL
it
true
diff --git a/ACUtils.SqlDb/SqlDb.cs b/ACUtils.SqlDb/SqlDb.cs
index 2f43994..c9094e7 100644
--- a/ACUtils.SqlDb/SqlDb.cs
+++ b/ACUtils.SqlDb/SqlDb.cs
@@ -104,6 +104,15 @@ public static DataTable QueryDataTable(SqlConnection connection, string queryStr
return ACUtils.DBModel.Idrate(dt);
}
+ public async IAsyncEnumerable QueryManyAsync(string sql, params KeyValuePair[] queryParams) where T : ACUtils.DBModel, new()
+ {
+ var dt = QueryDataTable(sql, queryParams);
+ await foreach (var q in ACUtils.DBModel.IdrateAsyncGenerator(dt))
+ {
+ yield return q;
+ }
+ }
+
public static List QueryMany(SqlConnection connection, string sql, params KeyValuePair[] queryParams) where T : ACUtils.DBModel, new()
{
var dt = QueryDataTable(connection, sql, queryParams);
@@ -138,12 +147,16 @@ public DataSet QueryDataSet(string queryString, params KeyValuePair>[] queryParams)
{
- SqlCommand selectCommand = generateCommand(connection, queryString, queryParams);
- SqlDataAdapter adapter = new SqlDataAdapter(selectCommand);
- DataSet ds = new DataSet();
- adapter.MissingSchemaAction = MissingSchemaAction;
- adapter.Fill(ds);
- return ds;
+ using (SqlCommand selectCommand = generateCommand(connection, queryString, queryParams))
+ {
+ using (SqlDataAdapter adapter = new SqlDataAdapter(selectCommand))
+ {
+ DataSet ds = new DataSet();
+ adapter.MissingSchemaAction = MissingSchemaAction;
+ adapter.Fill(ds);
+ return ds;
+ }
+ }
}
public DataSet QueryDataSet(string queryString, params KeyValuePair[] queryParams)
@@ -171,12 +184,16 @@ public DataSet QueryDataSet(string queryString, params KeyValuePair[] queryParams)
{
- SqlCommand selectCommand = generateCommand(connection, queryString, queryParams);
- SqlDataAdapter adapter = new SqlDataAdapter(selectCommand);
- DataSet ds = new DataSet();
- adapter.MissingSchemaAction = MissingSchemaAction;
- adapter.Fill(ds);
- return ds;
+ using (SqlCommand selectCommand = generateCommand(connection, queryString, queryParams))
+ {
+ using (SqlDataAdapter adapter = new SqlDataAdapter(selectCommand))
+ {
+ DataSet ds = new DataSet();
+ adapter.MissingSchemaAction = MissingSchemaAction;
+ adapter.Fill(ds);
+ return ds;
+ }
+ }
}
public DataSet QueryDataSet(string queryString)
@@ -204,12 +221,16 @@ public DataSet QueryDataSet(string queryString)
public static DataSet QueryDataSet(SqlConnection connection, string queryString)
{
- SqlCommand selectCommand = generateCommand(connection, queryString);
- SqlDataAdapter adapter = new SqlDataAdapter(selectCommand);
- DataSet ds = new DataSet();
- adapter.MissingSchemaAction = MissingSchemaAction;
- adapter.Fill(ds);
- return ds;
+ using (SqlCommand selectCommand = generateCommand(connection, queryString))
+ {
+ using (SqlDataAdapter adapter = new SqlDataAdapter(selectCommand))
+ {
+ DataSet ds = new DataSet();
+ adapter.MissingSchemaAction = MissingSchemaAction;
+ adapter.Fill(ds);
+ return ds;
+ }
+ }
}
#endregion
@@ -303,33 +324,37 @@ public T QuerySingleValue(string queryString, params KeyValuePair(SqlConnection connection, string queryString, params KeyValuePair[] queryParams)
{
- SqlCommand selectCommand = generateCommand(connection, queryString, queryParams);
- object value = selectCommand.ExecuteScalar();
- // conversione variabile da object a type specificato
- //return (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFrom(value);
- var type = typeof(T);
- if (Nullable.GetUnderlyingType(typeof(T)) != null)
+ using (SqlCommand selectCommand = generateCommand(connection, queryString, queryParams))
{
- type = Nullable.GetUnderlyingType(type);
- if (value == null || value == DBNull.Value)
+ object value = selectCommand.ExecuteScalar();
+ // conversione variabile da object a type specificato
+ //return (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFrom(value);
+ var type = typeof(T);
+ if (Nullable.GetUnderlyingType(typeof(T)) != null)
{
- return default(T);
+ type = Nullable.GetUnderlyingType(type);
+ if (value == null || value == DBNull.Value)
+ {
+ return default(T);
+ }
}
+ return (T)Convert.ChangeType(value, type);
}
- return (T)Convert.ChangeType(value, type);
}
public static Nullable QueryNullableSingleValue(SqlConnection connection, string queryString, params KeyValuePair[] queryParams) where T : struct
{
- SqlCommand selectCommand = generateCommand(connection, queryString, queryParams);
- object value = selectCommand.ExecuteScalar();
- if (value is DBNull)
+ using (SqlCommand selectCommand = generateCommand(connection, queryString, queryParams))
{
- return null;
+ object value = selectCommand.ExecuteScalar();
+ if (value is DBNull)
+ {
+ return null;
+ }
+ // conversione variabile da object a type specificato
+ //return (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFrom(value);
+ return (T?)Convert.ChangeType(value, typeof(T?));
}
- // conversione variabile da object a type specificato
- //return (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFrom(value);
- return (T?)Convert.ChangeType(value, typeof(T?));
}
public T QuerySingleValue(string queryString, params KeyValuePair>[] queryParams)
@@ -357,9 +382,11 @@ public T QuerySingleValue(string queryString, params KeyValuePair(SqlConnection connection, string queryString, params KeyValuePair>[] queryParams)
{
- SqlCommand selectCommand = generateCommand(connection, queryString, queryParams);
- object value = selectCommand.ExecuteScalar();
- return (T)Convert.ChangeType(value, typeof(T));
+ using (SqlCommand selectCommand = generateCommand(connection, queryString, queryParams))
+ {
+ object value = selectCommand.ExecuteScalar();
+ return (T)Convert.ChangeType(value, typeof(T));
+ }
}
@@ -388,9 +415,11 @@ public T QuerySingleValue(string queryString)
public static T QuerySingleValue(SqlConnection connection, string queryString)
{
- SqlCommand selectCommand = generateCommand(connection, queryString);
- object value = selectCommand.ExecuteScalar();
- return (T)Convert.ChangeType(value, typeof(T));
+ using (SqlCommand selectCommand = generateCommand(connection, queryString))
+ {
+ object value = selectCommand.ExecuteScalar();
+ return (T)Convert.ChangeType(value, typeof(T));
+ }
}
@@ -448,9 +477,11 @@ public static bool Execute(SqlConnection connection, string queryString, params
{
//queryString = queryString.Trim().Replace(System.Environment.NewLine, " ");
//queryString = System.Text.RegularExpressions.Regex.Replace(queryString, @"\s+", " ");
- SqlCommand selectCommand = generateCommand(connection, queryString, queryParams);
- var value = selectCommand.ExecuteNonQuery() > 0;
- return value;
+ using (SqlCommand selectCommand = generateCommand(connection, queryString, queryParams))
+ {
+ var value = selectCommand.ExecuteNonQuery() > 0;
+ return value;
+ }
}
public bool Execute(string queryString, params KeyValuePair>[] queryParams)
@@ -477,9 +508,11 @@ public bool Execute(string queryString, params KeyValuePair>[] queryParams)
{
- SqlCommand selectCommand = generateCommand(connection, queryString, queryParams);
- var value = selectCommand.ExecuteNonQuery() > 0;
- return value;
+ using (SqlCommand selectCommand = generateCommand(connection, queryString, queryParams))
+ {
+ var value = selectCommand.ExecuteNonQuery() > 0;
+ return value;
+ }
}
public bool Execute(string queryString)
@@ -507,8 +540,10 @@ public bool Execute(string queryString)
public static bool Execute(SqlConnection connection, string queryString)
{
- SqlCommand selectCommand = generateCommand(connection, queryString);
- return selectCommand.ExecuteNonQuery() > 0;
+ using (SqlCommand selectCommand = generateCommand(connection, queryString))
+ {
+ return selectCommand.ExecuteNonQuery() > 0;
+ }
}
#endregion
@@ -548,8 +583,7 @@ public static T GetColVal(DataRow dataRow, string columName)
#region generateCommand
private static SqlCommand generateCommand(SqlConnection connection, string queryString)
{
- SqlCommand command = new SqlCommand(queryString, connection);
- return command;
+ return new SqlCommand(queryString, connection);
}
private static SqlCommand generateCommand(SqlConnection connection, string queryString, KeyValuePair[] queryParams)
@@ -729,7 +763,7 @@ public void CompleteTransaction()
public void AbortTransaction()
{
- if (Transaction.Current.TransactionInformation.Status == TransactionStatus.Active)
+ if (Transaction.Current?.TransactionInformation?.Status == TransactionStatus.Active)
{
scope?.Dispose();
}
@@ -742,7 +776,7 @@ public void BulkInsert(string tablename, IEnumerable records)
{
using (var bc = new SqlBulkCopy(ConnectionString))
{
- bc.WriteToServer(BulkInsertPrepare(bc, tablename, records));
+ bc.WriteToServer(BulkInsertPrepare(bc, tablename, records));
}
}
public async System.Threading.Tasks.Task BulkInsertAsync(string tablename, IEnumerable records)
@@ -864,7 +898,11 @@ public void Dispose()
protected virtual void Dispose(bool disposing)
{
- AbortTransaction();
+ try
+ {
+ AbortTransaction();
+ }
+ catch { }
}
#endregion
}