Forráskód Böngészése

Update packages

InstallDbCommand fixed, tested
Add new DatabaseProperties extension to qdr.fnd.core.data
Dalibor Votruba 4 éve
szülő
commit
53dcd9da0c

+ 42 - 6
Common/qdr.fnd.core.data/Extensions/SqlConnectionExt.cs

@@ -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;
         }
 
     }

+ 2 - 2
Common/qdr.fnd.core.data/qdr.fnd.core.data.csproj

@@ -10,8 +10,8 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.9" />
-    <PackageReference Include="System.Data.SqlClient" Version="4.8.2" />
+    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.11" />
+    <PackageReference Include="System.Data.SqlClient" Version="4.8.3" />
   </ItemGroup>
 
   <ItemGroup>

+ 1 - 1
Common/qdr.fnd.core/qdr.fnd.core.csproj

@@ -15,7 +15,7 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="System.IO.Abstractions" Version="13.2.43" />
+    <PackageReference Include="System.IO.Abstractions" Version="13.2.47" />
   </ItemGroup>
 
 </Project>

+ 4 - 4
Console/Commands/Install/InstallDbCommand.cs

@@ -95,7 +95,7 @@ namespace BO.Console.Commands.Install
                         CreateDatabase(conn);
                         using (var connDb = OpenConnection())
                         {
-                            UpdateModel(conn);    
+                            UpdateModel(connDb);    
                         }
                     }
                     else
@@ -159,13 +159,13 @@ namespace BO.Console.Commands.Install
         }
         private void DeleteDatabase(SqlConnection masterConnection)
         {
-            masterConnection.BatchExecute($"ALTER DATABASE [{DatabseName}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE\nGO\nDROP DATABASE [{DatabseName}]\nGO");
+            masterConnection.BatchExecute($"ALTER DATABASE [{DatabseName}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE\nGO\nDROP DATABASE [{DatabseName}];\nGO");
             WriteInfo($"Database '{DatabseName}' dropped.");
         }
 
         private Version GetDbVersion(SqlConnection dbConnection)
         {
-            var version = dbConnection.ExecuteScalar<string>(CommandType.Text, $"select value from sys.extended_properties where NAME = '{DB_PROP_NAME}'");
+            var version = dbConnection.DatabasePropertyGet(DB_PROP_NAME);
             WriteDebugInfo($"DB version get: {version}");
             if (!string.IsNullOrEmpty(version))
             {
@@ -177,7 +177,7 @@ namespace BO.Console.Commands.Install
 
         private void SetDbVersion(SqlConnection dbConnection)
         {
-            dbConnection.Execute(CommandType.Text, $"EXEC sys.sp_updateextendedproperty @name=N'{DB_PROP_NAME}', @value=N'{DB_VERSION}'");
+            dbConnection.DatabasePropertyAddOrUpdate(DB_PROP_NAME,DB_VERSION);
             WriteDebugInfo($"DB version set: {DB_VERSION}");
         }
 

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 232 - 233
Console/Scripts/bo_create_schema.sql


Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott