|
|
@@ -33,8 +33,9 @@ namespace Quadarax.Foundation.Core.Data.Extensions
|
|
|
{
|
|
|
var result = 0;
|
|
|
var sqlBatch = string.Empty;
|
|
|
+
|
|
|
query += "\nGO"; // make sure last batch is executed.
|
|
|
- foreach (var line in query.Split(new string[] {"\n", "\r"}, StringSplitOptions.RemoveEmptyEntries))
|
|
|
+ foreach (var line in query.Split(new string[] { "\n", "\r" }, StringSplitOptions.RemoveEmptyEntries))
|
|
|
{
|
|
|
if (line.ToUpperInvariant().Trim() == "GO")
|
|
|
{
|
|
|
@@ -74,22 +75,57 @@ namespace Quadarax.Foundation.Core.Data.Extensions
|
|
|
return (TResult)command.ExecuteScalar();
|
|
|
}
|
|
|
|
|
|
- public static int Execute(this SqlConnection owner,CommandType type, string query, params SqlParameter[] parameters)
|
|
|
+ public static int Execute(this SqlConnection owner, CommandType type, string query,
|
|
|
+ params SqlParameter[] parameters)
|
|
|
{
|
|
|
if (owner == null)
|
|
|
throw new ArgumentNullException(nameof(owner));
|
|
|
if (string.IsNullOrEmpty(query))
|
|
|
throw new ArgumentNullException(nameof(query));
|
|
|
|
|
|
- var command = owner.CreateCommand();
|
|
|
- command.CommandText = query;
|
|
|
+ var command = new SqlCommand(query, owner);
|
|
|
command.CommandType = type;
|
|
|
|
|
|
- if (parameters!=null)
|
|
|
+ if (parameters != null)
|
|
|
foreach (var par in parameters)
|
|
|
command.Parameters.Add(par);
|
|
|
|
|
|
- return command.ExecuteNonQuery();
|
|
|
+ var result = command.ExecuteNonQuery();
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static bool DatabasePropertyExists(this SqlConnection owner, string databaseProperty)
|
|
|
+ {
|
|
|
+ return ExecuteScalar<int>(owner, CommandType.Text, $"select count(*) FROM SYS.EXTENDED_PROPERTIES where name='{databaseProperty}' and class_desc = 'DATABASE'") > 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static string DatabasePropertyGet(this SqlConnection owner, string databaseProperty)
|
|
|
+ {
|
|
|
+ if (DatabasePropertyExists(owner, databaseProperty))
|
|
|
+ return ExecuteScalar<string>(owner, CommandType.Text, $"select [value] FROM SYS.EXTENDED_PROPERTIES where name='{databaseProperty}' and class_desc = 'DATABASE'");
|
|
|
+ else
|
|
|
+ return string.Empty;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static bool DatabasePropertyAddOrUpdate(this SqlConnection owner, string databaseProperty, string value)
|
|
|
+ {
|
|
|
+ bool result;
|
|
|
+ var spParams = new SqlParameter[]
|
|
|
+ {
|
|
|
+ new SqlParameter("@name", SqlDbType.VarChar) { Value = databaseProperty },
|
|
|
+ new SqlParameter("@value", SqlDbType.VarChar) { Value = value },
|
|
|
+ };
|
|
|
+
|
|
|
+ if (DatabasePropertyExists(owner, databaseProperty))
|
|
|
+ {
|
|
|
+ result = ExecuteSp(owner, "sys.sp_updateextendedproperty", spParams) > 0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ result = ExecuteSp(owner, "sys.sp_addextendedproperty", spParams) > 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
}
|