Ver código fonte

# 2.1.0
- block query from different data source
- support execute event
- [Vitorm.Data] Ability to load the configuration from a specified file, such as appsettings.Development.json

Lith 8 meses atrás
pai
commit
417244de58

+ 3 - 1
doc/ReleaseLog.md

@@ -2,7 +2,9 @@
 
 -----------------------
 # 2.1.0
-- block query from different datasource
+- block query from different data source
+- support execute event
+- [Vitorm.Data] Ability to load the configuration from a specified file, such as appsettings.Development.json
 
 -----------------------
 # 2.0.6

+ 15 - 4
src/Vitorm.Data/Data.cs

@@ -15,12 +15,23 @@ namespace Vitorm
 {
     public partial class Data
     {
-
         static Data()
+        {
+            Init(Appsettings.json);
+        }
+        /// <summary>
+        /// Data.Init("appsettings.Development.json")
+        /// </summary>
+        /// <param name="appsettingsFileName"></param>
+        public static void Init(string appsettingsFileName)
+        {
+            Init(new JsonFile(appsettingsFileName));
+        }
+        public static void Init(JsonFile json)
         {
             #region #1 load dataProvider
             {
-                var dataSourceConfigs = Appsettings.json.GetByPath<List<Dictionary<string, object>>>("Vitorm.Data");
+                var dataSourceConfigs = json.GetByPath<List<Dictionary<string, object>>>("Vitorm.Data");
                 var dataProviders = dataSourceConfigs?.Select(CreateDataProvider).NotNull().ToList();
 
                 if (dataProviders?.Any() == true) providerCache.AddRange(dataProviders);
@@ -28,9 +39,9 @@ namespace Vitorm
             #endregion
 
 
-            #region #2 load entityLoader from appsettings.json
+            #region #2 load entityLoader
             {
-                var configs = Appsettings.json.GetByPath<List<Dictionary<string, object>>>("Vitorm.EntityLoader");
+                var configs = json.GetByPath<List<Dictionary<string, object>>>("Vitorm.EntityLoader");
                 configs?.ForEach(config =>
                 {
                     object temp;

+ 1 - 1
src/Vitorm.Data/Vitorm.Data.csproj

@@ -6,7 +6,7 @@
 
     <PropertyGroup>
         <TargetFramework>netstandard2.0</TargetFramework>
-        <Version>2.1.1-preview</Version>
+        <Version>2.1.1</Version>
         <LangVersion>9.0</LangVersion>
     </PropertyGroup>
 

+ 2 - 2
src/Vitorm.EntityGenerate/Vitorm.EntityGenerate.csproj

@@ -6,7 +6,7 @@
 
     <PropertyGroup>
         <TargetFramework>netstandard2.0</TargetFramework>
-        <Version>2.1.1-preview</Version>
+        <Version>2.1.1</Version>
         <LangVersion>9.0</LangVersion>
     </PropertyGroup>
 
@@ -33,7 +33,7 @@
     <ItemGroup>
         <PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
         <PackageReference Include="System.Reflection.Emit" Version="4.7.0" />
-        <PackageReference Include="Vit.Db" Version="[3.0.0, 3.1.0)" />
+        <PackageReference Include="Vit.Db" Version="[3.0.1, 3.1.0)" />
     </ItemGroup>
 
     <ItemGroup>

+ 1 - 1
src/Vitorm.MySql/Vitorm.MySql.csproj

@@ -6,7 +6,7 @@
 
     <PropertyGroup>
         <TargetFramework>netstandard2.0</TargetFramework>
-        <Version>2.1.1-preview</Version>
+        <Version>2.1.1</Version>
         <LangVersion>9.0</LangVersion>
     </PropertyGroup>
 

+ 2 - 2
src/Vitorm.SqlServer/Vitorm.SqlServer.csproj

@@ -6,7 +6,7 @@
 
     <PropertyGroup>
         <TargetFramework>netstandard2.0</TargetFramework>
-        <Version>2.1.1-preview</Version>
+        <Version>2.1.1</Version>
         <LangVersion>9.0</LangVersion>
     </PropertyGroup>
 
@@ -31,7 +31,7 @@
     </ItemGroup>
 
     <ItemGroup>
-        <PackageReference Include="Microsoft.Data.SqlClient" Version="5.2.1" />
+        <PackageReference Include="Microsoft.Data.SqlClient" Version="5.2.2" />
     </ItemGroup>
 
     <ItemGroup>

+ 2 - 2
src/Vitorm.Sqlite/Vitorm.Sqlite.csproj

@@ -6,7 +6,7 @@
 
     <PropertyGroup>
         <TargetFramework>netstandard2.0</TargetFramework>
-        <Version>2.1.1-preview</Version>
+        <Version>2.1.1</Version>
         <LangVersion>9.0</LangVersion>
     </PropertyGroup>
 
@@ -31,7 +31,7 @@
     </ItemGroup>
 
     <ItemGroup>
-        <PackageReference Include="Microsoft.Data.Sqlite" Version="8.0.7" />
+        <PackageReference Include="Microsoft.Data.Sqlite" Version="8.0.8" />
     </ItemGroup>
 
     <ItemGroup>

+ 51 - 0
src/Vitorm/DbContext.Event.cs

@@ -0,0 +1,51 @@
+using System;
+using System.Collections.Generic;
+
+namespace Vitorm
+{
+    public abstract partial class DbContext : IDbContext, IDisposable
+    {
+        public static Action<ExecuteEventArgument> event_DefaultOnExecuting;
+        public Action<ExecuteEventArgument> event_OnExecuting = event_DefaultOnExecuting;
+    }
+
+    public static class DbContext_Extensions_Event
+    {
+        public static void Event_OnExecuting(this DbContext dbContext, string executeString = null, object param = null)
+        {
+            if (dbContext.event_OnExecuting != null)
+                dbContext.event_OnExecuting(new(dbContext, executeString, param));
+        }
+        public static void Event_OnExecuting(this DbContext dbContext, ExecuteEventArgument arg)
+        {
+            if (dbContext.event_OnExecuting != null)
+                dbContext.event_OnExecuting(arg);
+        }
+    }
+
+    public class ExecuteEventArgument
+    {
+        public ExecuteEventArgument() { }
+        public ExecuteEventArgument(DbContext dbContext, string executeString = null, object param = null, Dictionary<string, object> extraParam = null)
+        {
+            this.dbContext = dbContext;
+            this.executeString = executeString;
+            this.param = param;
+            this.extraParam = extraParam;
+        }
+
+        public DbContext dbContext;
+        public string executeString;
+        public object param;
+        public Dictionary<string, object> extraParam;
+        public object GetExtraParam(string key) => extraParam?.TryGetValue(key, out var value) == true ? value : null;
+
+        public ExecuteEventArgument SetExtraParam(string key, object param)
+        {
+            extraParam ??= new();
+            extraParam[key] = param;
+            return this;
+        }
+    }
+
+}

+ 0 - 3
src/Vitorm/DbContext.cs

@@ -100,9 +100,6 @@ namespace Vitorm
         #endregion
 
 
-
-
-
         public virtual void Dispose()
         {
         }

+ 5 - 1
src/Vitorm/Sql/QueryExecutor/Sync/ToExecuteString.cs

@@ -19,7 +19,11 @@ namespace Vitorm.Sql.QueryExecutor
 
             // #2 Prepare sql
             var arg = new QueryTranslateArgument(dbContext, null);
-            return sqlTranslateService.PrepareQuery(arg, combinedStream);
+            var sql = sqlTranslateService.PrepareQuery(arg, combinedStream);
+
+            dbContext.Event_OnExecuting(sql, arg.sqlParam);
+
+            return sql;
         }
 
     }

+ 6 - 0
src/Vitorm/Sql/SqlDbContext.Database.Execute.cs

@@ -20,6 +20,8 @@ namespace Vitorm.Sql
 
         public virtual int Execute(string sql, IDictionary<string, object> param = null, int? commandTimeout = null, bool useReadOnly = false)
         {
+            this.Event_OnExecuting(sql, param);
+
             commandTimeout ??= this.commandTimeout ?? defaultCommandTimeout;
             var transaction = GetCurrentTransaction();
 
@@ -35,6 +37,8 @@ namespace Vitorm.Sql
 
         public virtual IDataReader ExecuteReader(string sql, IDictionary<string, object> param = null, int? commandTimeout = null, bool useReadOnly = false)
         {
+            this.Event_OnExecuting(sql, param);
+
             commandTimeout ??= this.commandTimeout ?? defaultCommandTimeout;
             var transaction = GetCurrentTransaction();
 
@@ -50,6 +54,8 @@ namespace Vitorm.Sql
 
         public virtual object ExecuteScalar(string sql, IDictionary<string, object> param = null, int? commandTimeout = null, bool useReadOnly = false)
         {
+            this.Event_OnExecuting(sql, param);
+
             commandTimeout ??= this.commandTimeout ?? defaultCommandTimeout;
             var transaction = GetCurrentTransaction();
 

+ 2 - 2
src/Vitorm/Vitorm.csproj

@@ -6,7 +6,7 @@
 
     <PropertyGroup>
         <TargetFramework>netstandard2.0</TargetFramework>
-        <Version>2.1.1-preview</Version>
+        <Version>2.1.1</Version>
         <LangVersion>9.0</LangVersion>
     </PropertyGroup>
 
@@ -32,7 +32,7 @@
 
     <ItemGroup>
         <PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
-        <PackageReference Include="Vit.Linq" Version="[3.1.1-preview, 3.2.0)" />
+        <PackageReference Include="Vit.Linq" Version="[3.1.1, 3.2.0)" />
     </ItemGroup>
 
 </Project>

+ 3 - 3
test/IssuesTest/Vitorm.MsTest.Issue000_099/Vitorm.MsTest.Issue000_099.csproj

@@ -14,9 +14,9 @@
     </PropertyGroup>
 
     <ItemGroup>
-        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
-        <PackageReference Include="MSTest.TestAdapter" Version="3.5.1" />
-        <PackageReference Include="MSTest.TestFramework" Version="3.5.1" />
+        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.0" />
+        <PackageReference Include="MSTest.TestAdapter" Version="3.5.2" />
+        <PackageReference Include="MSTest.TestFramework" Version="3.5.2" />
 
         <PackageReference Include="Vit.Core" Version="2.2.0" />
     </ItemGroup>

+ 1 - 1
test/Vitorm.Data.Benchmark/Vitorm.Data.Benchmark.csproj

@@ -15,7 +15,7 @@
       <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.32" />
       <PackageReference Include="MySql.EntityFrameworkCore" Version="8.0.5" />
  
-      <PackageReference Include="SqlSugarCore" Version="5.1.4.166" />
+      <PackageReference Include="SqlSugarCore" Version="5.1.4.167" />
     </ItemGroup>
 
     <ItemGroup>

+ 23 - 0
test/Vitorm.Data.MsTest/CustomTest/Appsettings_Test.cs

@@ -0,0 +1,23 @@
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+namespace Vitorm.MsTest
+{
+
+    [TestClass]
+    public partial class Appsettings_Test
+    {
+
+        [TestMethod]
+        public void Test_GetDataProviderByName()
+        {
+            Data.Init("appsettings.Development.json");
+
+            using var dbContext = Data.DataProvider("Sqlite-develop")?.CreateSqlDbContext();
+            Assert.AreEqual("data source=sqlite.develop.db;", dbContext.dbConnection.ConnectionString);
+        }
+
+
+    }
+}
+
+
+

+ 6 - 3
test/Vitorm.Data.MsTest/Vitorm.Data.MsTest.csproj

@@ -14,9 +14,9 @@
     </PropertyGroup>
 
     <ItemGroup>
-        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
-        <PackageReference Include="MSTest.TestAdapter" Version="3.5.1" />
-        <PackageReference Include="MSTest.TestFramework" Version="3.5.1" />
+        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.0" />
+        <PackageReference Include="MSTest.TestAdapter" Version="3.5.2" />
+        <PackageReference Include="MSTest.TestFramework" Version="3.5.2" />
 
         <PackageReference Include="Vit.Core" Version="2.2.0" />
     </ItemGroup>
@@ -30,6 +30,9 @@
 
 
     <ItemGroup>
+        <None Update="appsettings.Development.json">
+          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+        </None>
         <None Update="appsettings.json">
             <CopyToOutputDirectory>Always</CopyToOutputDirectory>
         </None>

+ 12 - 0
test/Vitorm.Data.MsTest/appsettings.Development.json

@@ -0,0 +1,12 @@
+{
+  "Vitorm": {
+    "Data": [
+      {
+        "name": "Sqlite-develop",
+        "provider": "Sqlite",
+        "namespace": "Vitorm.MsTest.develop.Sqlite",
+        "connectionString": "data source=sqlite.develop.db;"
+      }
+    ]
+  }
+}

+ 3 - 3
test/Vitorm.EntityGenerate.MsTest/Vitorm.EntityGenerate.MsTest.csproj

@@ -14,9 +14,9 @@
     </PropertyGroup>
 
     <ItemGroup>
-        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
-        <PackageReference Include="MSTest.TestAdapter" Version="3.5.1" />
-        <PackageReference Include="MSTest.TestFramework" Version="3.5.1" />
+        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.0" />
+        <PackageReference Include="MSTest.TestAdapter" Version="3.5.2" />
+        <PackageReference Include="MSTest.TestFramework" Version="3.5.2" />
 
         <PackageReference Include="Vit.Core" Version="2.2.0" />
     </ItemGroup>

+ 3 - 3
test/Vitorm.MsTest/Vitorm.MsTest.csproj

@@ -14,9 +14,9 @@
     </PropertyGroup>
 
     <ItemGroup>
-        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
-        <PackageReference Include="MSTest.TestAdapter" Version="3.5.1" />
-        <PackageReference Include="MSTest.TestFramework" Version="3.5.1" />
+        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.0" />
+        <PackageReference Include="MSTest.TestAdapter" Version="3.5.2" />
+        <PackageReference Include="MSTest.TestFramework" Version="3.5.2" />
 
         <PackageReference Include="Vit.Core" Version="2.2.0" />
     </ItemGroup>

+ 3 - 3
test/Vitorm.MySql.MsTest/Vitorm.MySql.MsTest.csproj

@@ -14,9 +14,9 @@
     </PropertyGroup>
 
     <ItemGroup>
-        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
-        <PackageReference Include="MSTest.TestAdapter" Version="3.5.1" />
-        <PackageReference Include="MSTest.TestFramework" Version="3.5.1" />
+        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.0" />
+        <PackageReference Include="MSTest.TestAdapter" Version="3.5.2" />
+        <PackageReference Include="MSTest.TestFramework" Version="3.5.2" />
 
         <PackageReference Include="Vit.Core" Version="2.2.0" />
     </ItemGroup>

+ 3 - 3
test/Vitorm.SqlServer.MsTest/Vitorm.SqlServer.MsTest.csproj

@@ -14,9 +14,9 @@
     </PropertyGroup>
 
     <ItemGroup>
-        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
-        <PackageReference Include="MSTest.TestAdapter" Version="3.5.1" />
-        <PackageReference Include="MSTest.TestFramework" Version="3.5.1" />
+        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.0" />
+        <PackageReference Include="MSTest.TestAdapter" Version="3.5.2" />
+        <PackageReference Include="MSTest.TestFramework" Version="3.5.2" />
 
         <PackageReference Include="Vit.Core" Version="2.2.0" />
     </ItemGroup>

+ 92 - 0
test/Vitorm.Sqlite.MsTest/CommonTest/Event_Test.cs

@@ -0,0 +1,92 @@
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+
+using Vit.Linq;
+
+namespace Vitorm.MsTest.CommonTest
+{
+
+    [TestClass]
+    public partial class Event_Test
+    {
+        class AssertDisposable : IDisposable
+        {
+            public AssertDisposable()
+            {
+                executeString = null;
+            }
+            public void Dispose()
+            {
+                Assert.IsNotNull(executeString);
+            }
+        }
+        static string executeString;
+
+        static Event_Test()
+        {
+            DbContext.event_DefaultOnExecuting = (arg) =>
+            {
+                executeString = arg.executeString;
+            };
+        }
+
+
+        [TestMethod]
+        public void Test()
+        {
+            using var dbContext = DataSource.CreateDbContextForWriting();
+            AssertDisposable assertDisposable;
+
+            // TryCreateTable
+            using (assertDisposable = new())
+            {
+                dbContext.TryCreateTable<User>();
+            }
+
+
+            var newUserList = User.NewUsers(7, 4, forAdd: true);
+            // Add
+            using (assertDisposable = new())
+            {
+                dbContext.Add(newUserList[0]);
+            }
+
+            // AddRange
+            using (assertDisposable = new())
+            {
+                dbContext.AddRange(newUserList.Skip(1));
+            }
+
+
+            // Get
+            using (assertDisposable = new())
+            {
+                var user = dbContext.Get<User>(1);
+            }
+
+            // Query
+            using (assertDisposable = new())
+            {
+                var result = dbContext.Query<User>().ToList();
+            }
+            using (assertDisposable = new())
+            {
+                var result = dbContext.Query<User>().Count();
+            }
+            using (assertDisposable = new())
+            {
+                var result = dbContext.Query<User>().ToExecuteString();
+            }
+            using (assertDisposable = new())
+            {
+                var result = dbContext.Query<User>().FirstOrDefault();
+            }
+            using (assertDisposable = new())
+            {
+                var result = dbContext.Query<User>().ToListAndTotalCount();
+            }
+
+        }
+
+
+    }
+}

+ 3 - 3
test/Vitorm.Sqlite.MsTest/Vitorm.Sqlite.MsTest.csproj

@@ -14,9 +14,9 @@
     </PropertyGroup>
 
     <ItemGroup>
-        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
-        <PackageReference Include="MSTest.TestAdapter" Version="3.5.1" />
-        <PackageReference Include="MSTest.TestFramework" Version="3.5.1" />
+        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.0" />
+        <PackageReference Include="MSTest.TestAdapter" Version="3.5.2" />
+        <PackageReference Include="MSTest.TestFramework" Version="3.5.2" />
 
         <PackageReference Include="Vit.Core" Version="2.2.0" />
     </ItemGroup>