Explorar el Código

Merge pull request #16 from LithWang/master

2.2.0
Lith hace 7 meses
padre
commit
a91419d98c

+ 1 - 1
Vitorm.sln

@@ -7,7 +7,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "doc", "doc", "{75C25D0B-852
 	ProjectSection(SolutionItems) = preProject
 		doc\Count.md = doc\Count.md
 		README.md = README.md
-		doc\ReleaseLog.md = doc\ReleaseLog.md
+		doc\ReleaseNotes.md = doc\ReleaseNotes.md
 		doc\TODO.md = doc\TODO.md
 	EndProjectSection
 EndProject

+ 5 - 2
doc/ReleaseLog.md → doc/ReleaseNotes.md

@@ -1,4 +1,4 @@
-# Vitorm ReleaseLog
+# Vitorm ReleaseNotes
 
 
 -----------------------
@@ -7,7 +7,10 @@
 - [Vitorm.Sqlite]
     - support autoincrement key
     - identity key will start from 1 after truncate table
-
+- [Vitorm.Data]
+    - change methods to virtual
+    - rename LoadDataProviders to AddDataProviders
+    - get DataProvider by name or namespace or class namespace
 
 -----------------------
 # 2.1.2

+ 2 - 2
src/Versions.props

@@ -1,7 +1,7 @@
 <Project>
     <PropertyGroup>
-        <Version>2.2.0-preview3</Version>
-        <VitLinq_Version>[3.1.3-preview, 3.2.0)</VitLinq_Version>
+        <Version>2.2.0</Version>
+        <VitLinq_Version>[3.1.3, 3.2.0)</VitLinq_Version>
     </PropertyGroup>
 
     <PropertyGroup>

+ 5 - 4
src/Vitorm.Data/Data.DataProviderCache.cs

@@ -18,7 +18,8 @@ namespace Vitorm
             /// separate by comma, for example: "Vitorm.Model.MySql,Vitorm.Model.SqlServer"
             /// </summary>
             public readonly string @namespace;
-            private readonly List<string> classFullNamePrefixList;
+            private readonly List<string> namespaceList;
+            private readonly List<string> namespacePrefixList;
             public readonly Dictionary<string, object> dataSourceConfig;
 
             public DataProviderCache(IDataProvider dataProvider, Dictionary<string, object> dataSourceConfig)
@@ -35,12 +36,12 @@ namespace Vitorm
                 {
                     name = strName;
                 }
-
-                classFullNamePrefixList = @namespace?.Split(',').Select(ns => ns + ".").ToList();
+                namespaceList = @namespace?.Split(',').ToList();
+                namespacePrefixList = namespaceList.Select(ns => ns + ".").ToList();
             }
             internal bool Match(string classFullName)
             {
-                return classFullNamePrefixList?.Any(classFullNamePrefix => classFullName.StartsWith(classFullNamePrefix)) == true;
+                return namespaceList.Contains(classFullName) || namespacePrefixList?.Any(classFullNamePrefix => classFullName.StartsWith(classFullNamePrefix)) == true;
             }
         }
 

+ 125 - 94
src/Vitorm.Data/Data.DataSource.cs

@@ -17,119 +17,150 @@ namespace Vitorm
         public partial class DataSource
         {
 
+
+            #region DataProvider
+
+            readonly ConcurrentDictionary<Type, IDataProvider> entityProviderMap = new();
+
+            readonly List<DataProviderCache> providerList = new();
+            DataProviderCache CreateDataProvider(Dictionary<string, object> dataProviderConfig)
+            {
+                /*
+                "provider": "Vitorm.Sqlite.DataProvider",
+                "assemblyName": "Vitorm.Sqlite",
+                "assemblyFile": "Vitorm.Sqlite.dll",
+                 */
+
+                object temp;
+                string provider = dataProviderConfig.TryGetValue("provider", out temp) ? temp as string : null;
+                string assemblyName = dataProviderConfig.TryGetValue("assemblyName", out temp) ? temp as string : null;
+                string assemblyFile = dataProviderConfig.TryGetValue("assemblyFile", out temp) ? temp as string : null;
+
+                Type providerType;
+                IDataProvider dataProvider;
+
+                // #1 load
+                providerType = ObjectLoader.GetType(className: provider, assemblyName: assemblyName, assemblyFile: assemblyFile);
+                dataProvider = providerType?.GetConstructor(Type.EmptyTypes)?.Invoke(new object[] { }) as IDataProvider;
+
+                // #2 try load by database type (Sqlite/MySql/SqlServer)
+                if (dataProvider == null)
+                {
+                    providerType = ObjectLoader.GetType(className: $"Vitorm.{provider}.DataProvider", assemblyName: $"Vitorm.{provider}", assemblyFile: $"Vitorm.{provider}.dll");
+                    dataProvider = providerType?.GetConstructor(Type.EmptyTypes)?.Invoke(new object[] { }) as IDataProvider;
+                }
+
+
+                if (dataProvider == null) return null;
+
+                dataProvider.Init(dataProviderConfig);
+                return new DataProviderCache(dataProvider, dataProviderConfig);
+            }
+
+
+            #endregion
+
+            #region  AddDataProvider 
+
+
             /// <summary>
             /// Data.Init("appsettings.Development.json")
             /// </summary>
             /// <param name="appsettingsFileName"></param>
-            public DataSource AddDataProviders(string appsettingsFileName)
+            public virtual DataSource AddDataProviders(string appsettingsFileName)
             {
                 AddDataProviders(new JsonFile(appsettingsFileName));
                 return this;
             }
 
-            public DataSource AddDataProviders(JsonFile json, string configPath = "Vitorm.Data")
+            public virtual int AddDataProviders(JsonFile json, string configPath = "Vitorm.Data")
             {
                 var dataProviderConfigs = json.GetByPath<List<Dictionary<string, object>>>(configPath);
-                return LoadDataProviders(dataProviderConfigs);
+                return AddDataProviders(dataProviderConfigs);
             }
-            public DataSource LoadDataProviders(IEnumerable<Dictionary<string, object>> dataProviderConfigs)
+
+            public virtual int AddDataProviders(IEnumerable<Dictionary<string, object>> dataProviderConfigs)
             {
                 var dataProviders = dataProviderConfigs?.Select(CreateDataProvider).NotNull().ToList();
 
-                if (dataProviders?.Any() == true) providerCache.AddRange(dataProviders);
+                if (dataProviders?.Any() != true) return 0;
 
-                providerMap.Clear();
+                providerList.AddRange(dataProviders);
 
-                return this;
+                entityProviderMap.Clear();
+
+                return dataProviders.Count;
+            }
+
+            /// <summary>
+            /// insert to header of DataProvider list
+            /// </summary>
+            /// <param name="dataProviderConfig"></param>
+            /// <returns></returns>
+            public virtual bool InsertDataProvider(Dictionary<string, object> dataProviderConfig)
+            {
+                var provider = CreateDataProvider(dataProviderConfig);
+                if (provider == null) return false;
+
+                providerList.Insert(0, provider);
+                entityProviderMap.Clear();
+                return true;
             }
 
-            public bool AddDataProvider(Dictionary<string, object> dataProviderConfig)
+            /// <summary>
+            /// insert to tail of DataProvider list
+            /// </summary>
+            /// <param name="dataProviderConfig"></param>
+            /// <returns></returns>
+            public virtual bool AddDataProvider(Dictionary<string, object> dataProviderConfig)
             {
                 var provider = CreateDataProvider(dataProviderConfig);
                 if (provider == null) return false;
 
-                providerCache.Insert(0, provider);
-                providerMap.Clear();
+                providerList.Add(provider);
+                entityProviderMap.Clear();
                 return true;
             }
-            public void ClearDataProviders(Predicate<DataProviderCache> predicate = null)
+
+            public virtual void ClearDataProviders(Predicate<DataProviderCache> predicate = null)
             {
                 if (predicate != null)
-                    providerCache.RemoveAll(predicate);
+                    providerList.RemoveAll(predicate);
                 else
-                    providerCache.Clear();
+                    providerList.Clear();
 
-                providerMap.Clear();
+                entityProviderMap.Clear();
             }
+            #endregion
 
 
-            #region DataProvider
+            #region GetDataProvider
 
-            public IDataProvider DataProvider<Entity>() => DataProvider(typeof(Entity));
-            public IDataProvider DataProvider(Type entityType)
+            public virtual IDataProvider DataProvider<Entity>() => DataProvider(typeof(Entity));
+            public virtual IDataProvider DataProvider(Type entityType)
             {
-                return providerMap.GetOrAdd(entityType, GetDataProviderFromConfig);
-
-                IDataProvider GetDataProviderFromConfig(Type entityType)
-                {
-                    var classFullName = entityType.FullName;
-                    return providerCache.FirstOrDefault(cache => cache.Match(classFullName))?.dataProvider
-                        ?? throw new NotImplementedException("can not find config for type: " + classFullName);
-                }
+                return entityProviderMap.GetOrAdd(entityType, GetDataProviderFromConfig);
+            }
+            private IDataProvider GetDataProviderFromConfig(Type entityType)
+            {
+                var classFullName = entityType.FullName;
+                return providerList.FirstOrDefault(cache => cache.Match(classFullName))?.dataProvider
+                    ?? throw new NotImplementedException("can not find config for type: " + classFullName);
             }
 
             /// <summary>
-            /// dataProviderName:  dataProviderName or dataProviderNamespace
+            /// nameOrNamespace:  dataProviderName or dataProviderNamespace
             /// </summary>
-            /// <param name="dataProviderName"></param>
+            /// <param name="nameOrNamespace"></param>
             /// <returns></returns>
-            public IDataProvider DataProvider(string dataProviderName)
+            public virtual IDataProvider DataProvider(string nameOrNamespace)
             {
-                return providerCache.FirstOrDefault(cache => cache.name == dataProviderName || cache.@namespace == dataProviderName)?.dataProvider;
+                return providerList.FirstOrDefault(cache => cache.name == nameOrNamespace || cache.@namespace == nameOrNamespace || cache.Match(nameOrNamespace))?.dataProvider;
             }
 
-
-            readonly ConcurrentDictionary<Type, IDataProvider> providerMap = new();
-
-            readonly List<DataProviderCache> providerCache = new();
-
-
-            DataProviderCache CreateDataProvider(Dictionary<string, object> dataProviderConfig)
-            {
-                /*
-                "provider": "Vitorm.Sqlite.DataProvider",
-                "assemblyName": "Vitorm.Sqlite",
-                "assemblyFile": "Vitorm.Sqlite.dll",
-                 */
-
-                object temp;
-                string provider = dataProviderConfig.TryGetValue("provider", out temp) ? temp as string : null;
-                string assemblyName = dataProviderConfig.TryGetValue("assemblyName", out temp) ? temp as string : null;
-                string assemblyFile = dataProviderConfig.TryGetValue("assemblyFile", out temp) ? temp as string : null;
-
-                Type providerType;
-                IDataProvider dataProvider;
-
-                // #1 load
-                providerType = ObjectLoader.GetType(className: provider, assemblyName: assemblyName, assemblyFile: assemblyFile);
-                dataProvider = providerType?.GetConstructor(Type.EmptyTypes)?.Invoke(new object[] { }) as IDataProvider;
-
-                // #2 try load by database type (Sqlite/MySql/SqlServer)
-                if (dataProvider == null)
-                {
-                    providerType = ObjectLoader.GetType(className: $"Vitorm.{provider}.DataProvider", assemblyName: $"Vitorm.{provider}", assemblyFile: $"Vitorm.{provider}.dll");
-                    dataProvider = providerType?.GetConstructor(Type.EmptyTypes)?.Invoke(new object[] { }) as IDataProvider;
-                }
-
-
-                if (dataProvider == null) return null;
-
-                dataProvider.Init(dataProviderConfig);
-                return new DataProviderCache(dataProvider, dataProviderConfig);
-            }
+            #endregion
 
 
-            #endregion
 
 
 
@@ -137,31 +168,31 @@ namespace Vitorm
             #region CRUD Sync
 
             // #0 Schema :  TryCreateTable TryDropTable
-            public void TryCreateTable<Entity>() => DataProvider<Entity>().TryCreateTable<Entity>();
-            public void TryDropTable<Entity>() => DataProvider<Entity>().TryDropTable<Entity>();
-            public void Truncate<Entity>() => DataProvider<Entity>().Truncate<Entity>();
+            public virtual void TryCreateTable<Entity>() => DataProvider<Entity>().TryCreateTable<Entity>();
+            public virtual void TryDropTable<Entity>() => DataProvider<Entity>().TryDropTable<Entity>();
+            public virtual void Truncate<Entity>() => DataProvider<Entity>().Truncate<Entity>();
 
 
             // #1 Create :  Add AddRange
-            public Entity Add<Entity>(Entity entity) => DataProvider<Entity>().Add<Entity>(entity);
-            public void AddRange<Entity>(IEnumerable<Entity> entities) => DataProvider<Entity>().AddRange<Entity>(entities);
+            public virtual Entity Add<Entity>(Entity entity) => DataProvider<Entity>().Add<Entity>(entity);
+            public virtual void AddRange<Entity>(IEnumerable<Entity> entities) => DataProvider<Entity>().AddRange<Entity>(entities);
 
             // #2 Retrieve : Get Query
-            public Entity Get<Entity>(object keyValue) => DataProvider<Entity>().Get<Entity>(keyValue);
-            public IQueryable<Entity> Query<Entity>() => DataProvider<Entity>().Query<Entity>();
+            public virtual Entity Get<Entity>(object keyValue) => DataProvider<Entity>().Get<Entity>(keyValue);
+            public virtual IQueryable<Entity> Query<Entity>() => DataProvider<Entity>().Query<Entity>();
 
 
             // #3 Update: Update UpdateRange
-            public int Update<Entity>(Entity entity) => DataProvider<Entity>().Update<Entity>(entity);
-            public int UpdateRange<Entity>(IEnumerable<Entity> entities) => DataProvider<Entity>().UpdateRange<Entity>(entities);
+            public virtual int Update<Entity>(Entity entity) => DataProvider<Entity>().Update<Entity>(entity);
+            public virtual int UpdateRange<Entity>(IEnumerable<Entity> entities) => DataProvider<Entity>().UpdateRange<Entity>(entities);
 
 
             // #4 Delete : Delete DeleteRange DeleteByKey DeleteByKeys
-            public int Delete<Entity>(Entity entity) => DataProvider<Entity>().Delete<Entity>(entity);
-            public int DeleteRange<Entity>(IEnumerable<Entity> entities) => DataProvider<Entity>().DeleteRange<Entity>(entities);
+            public virtual int Delete<Entity>(Entity entity) => DataProvider<Entity>().Delete<Entity>(entity);
+            public virtual int DeleteRange<Entity>(IEnumerable<Entity> entities) => DataProvider<Entity>().DeleteRange<Entity>(entities);
 
-            public int DeleteByKey<Entity>(object keyValue) => DataProvider<Entity>().DeleteByKey<Entity>(keyValue);
-            public int DeleteByKeys<Entity, Key>(IEnumerable<Key> keys) => DataProvider<Entity>().DeleteByKeys<Entity, Key>(keys);
+            public virtual int DeleteByKey<Entity>(object keyValue) => DataProvider<Entity>().DeleteByKey<Entity>(keyValue);
+            public virtual int DeleteByKeys<Entity, Key>(IEnumerable<Key> keys) => DataProvider<Entity>().DeleteByKeys<Entity, Key>(keys);
 
             #endregion
 
@@ -170,30 +201,30 @@ namespace Vitorm
             #region CRUD Async
 
             // #0 Schema :  TryCreateTable TryDropTable
-            public Task TryCreateTableAsync<Entity>() => DataProvider<Entity>().TryCreateTableAsync<Entity>();
-            public Task TryDropTableAsync<Entity>() => DataProvider<Entity>().TryDropTableAsync<Entity>();
-            public Task TruncateAsync<Entity>() => DataProvider<Entity>().TruncateAsync<Entity>();
+            public virtual Task TryCreateTableAsync<Entity>() => DataProvider<Entity>().TryCreateTableAsync<Entity>();
+            public virtual Task TryDropTableAsync<Entity>() => DataProvider<Entity>().TryDropTableAsync<Entity>();
+            public virtual Task TruncateAsync<Entity>() => DataProvider<Entity>().TruncateAsync<Entity>();
 
 
             // #1 Create :  Add AddRange
-            public Task<Entity> AddAsync<Entity>(Entity entity) => DataProvider<Entity>().AddAsync<Entity>(entity);
-            public Task AddRangeAsync<Entity>(IEnumerable<Entity> entities) => DataProvider<Entity>().AddRangeAsync<Entity>(entities);
+            public virtual Task<Entity> AddAsync<Entity>(Entity entity) => DataProvider<Entity>().AddAsync<Entity>(entity);
+            public virtual Task AddRangeAsync<Entity>(IEnumerable<Entity> entities) => DataProvider<Entity>().AddRangeAsync<Entity>(entities);
 
             // #2 Retrieve : Get Query
-            public Task<Entity> GetAsync<Entity>(object keyValue) => DataProvider<Entity>().GetAsync<Entity>(keyValue);
+            public virtual Task<Entity> GetAsync<Entity>(object keyValue) => DataProvider<Entity>().GetAsync<Entity>(keyValue);
 
 
             // #3 Update: Update UpdateRange
-            public Task<int> UpdateAsync<Entity>(Entity entity) => DataProvider<Entity>().UpdateAsync<Entity>(entity);
-            public Task<int> UpdateRangeAsync<Entity>(IEnumerable<Entity> entities) => DataProvider<Entity>().UpdateRangeAsync<Entity>(entities);
+            public virtual Task<int> UpdateAsync<Entity>(Entity entity) => DataProvider<Entity>().UpdateAsync<Entity>(entity);
+            public virtual Task<int> UpdateRangeAsync<Entity>(IEnumerable<Entity> entities) => DataProvider<Entity>().UpdateRangeAsync<Entity>(entities);
 
 
             // #4 Delete : Delete DeleteRange DeleteByKey DeleteByKeys
-            public Task<int> DeleteAsync<Entity>(Entity entity) => DataProvider<Entity>().DeleteAsync<Entity>(entity);
-            public Task<int> DeleteRangeAsync<Entity>(IEnumerable<Entity> entities) => DataProvider<Entity>().DeleteRangeAsync<Entity>(entities);
+            public virtual Task<int> DeleteAsync<Entity>(Entity entity) => DataProvider<Entity>().DeleteAsync<Entity>(entity);
+            public virtual Task<int> DeleteRangeAsync<Entity>(IEnumerable<Entity> entities) => DataProvider<Entity>().DeleteRangeAsync<Entity>(entities);
 
-            public Task<int> DeleteByKeyAsync<Entity>(object keyValue) => DataProvider<Entity>().DeleteByKeyAsync<Entity>(keyValue);
-            public Task<int> DeleteByKeysAsync<Entity, Key>(IEnumerable<Key> keys) => DataProvider<Entity>().DeleteByKeysAsync<Entity, Key>(keys);
+            public virtual Task<int> DeleteByKeyAsync<Entity>(object keyValue) => DataProvider<Entity>().DeleteByKeyAsync<Entity>(keyValue);
+            public virtual Task<int> DeleteByKeysAsync<Entity, Key>(IEnumerable<Key> keys) => DataProvider<Entity>().DeleteByKeysAsync<Entity, Key>(keys);
 
             #endregion
 

+ 6 - 3
src/Vitorm.Data/Data.cs

@@ -59,12 +59,15 @@ namespace Vitorm
             });
         }
 
+        #region DataProvider
+
         public static bool AddDataProvider(Dictionary<string, object> dataProviderConfig) => dataSource.AddDataProvider(dataProviderConfig);
+        public static int AddDataProviders(IEnumerable<Dictionary<string, object>> dataProviderConfigs) => dataSource.AddDataProviders(dataProviderConfigs);
 
         public static void ClearDataProviders(Predicate<DataProviderCache> predicate = null) => dataSource.ClearDataProviders(predicate);
 
 
-        #region DataProvider
+
 
         public static IDataProvider DataProvider<Entity>() => dataSource.DataProvider<Entity>();
         public static IDataProvider DataProvider(Type entityType) => dataSource.DataProvider(entityType);
@@ -72,9 +75,9 @@ namespace Vitorm
         /// <summary>
         /// dataProviderName:  dataProviderName or dataProviderNamespace
         /// </summary>
-        /// <param name="dataProviderName"></param>
+        /// <param name="nameOrNamespace">dataProviderName or dataProviderNamespace</param>
         /// <returns></returns>
-        public static IDataProvider DataProvider(string dataProviderName) => dataSource.DataProvider(dataProviderName);
+        public static IDataProvider DataProvider(string nameOrNamespace) => dataSource.DataProvider(nameOrNamespace);
 
         #endregion
 

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

@@ -32,7 +32,7 @@
     </ItemGroup>
 
     <ItemGroup>
-        <PackageReference Include="Vit.Core" Version="[2.2.0, 2.3.0)"  />
+        <PackageReference Include="Vit.Core" Version="2.3.0" />
     </ItemGroup>
 
     <ItemGroup>

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

@@ -34,7 +34,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.1, 3.1.0)" />
+        <PackageReference Include="Vit.Db" Version="3.0.2" />
     </ItemGroup>
 
     <ItemGroup>

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

@@ -32,7 +32,7 @@
     </ItemGroup>
 
     <ItemGroup>
-        <PackageReference Include="Microsoft.Data.Sqlite" Version="8.0.8" />
+        <PackageReference Include="Microsoft.Data.Sqlite" Version="8.0.10" />
     </ItemGroup>
 
     <ItemGroup>

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

@@ -14,11 +14,11 @@
     </PropertyGroup>
 
     <ItemGroup>
-        <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="Microsoft.NET.Test.Sdk" Version="17.11.1" />
+        <PackageReference Include="MSTest.TestAdapter" Version="3.6.1" />
+        <PackageReference Include="MSTest.TestFramework" Version="3.6.1" />
 
-        <PackageReference Include="Vit.Core" Version="2.2.0" />
+        <PackageReference Include="Vit.Core" Version="2.3.0" />
     </ItemGroup>
 
     <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.167" />
+      <PackageReference Include="SqlSugarCore" Version="5.1.4.169" />
     </ItemGroup>
 
     <ItemGroup>

+ 4 - 4
test/Vitorm.Data.MsTest/Vitorm.Data.MsTest.csproj

@@ -14,11 +14,11 @@
     </PropertyGroup>
 
     <ItemGroup>
-        <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="Microsoft.NET.Test.Sdk" Version="17.11.1" />
+        <PackageReference Include="MSTest.TestAdapter" Version="3.6.1" />
+        <PackageReference Include="MSTest.TestFramework" Version="3.6.1" />
 
-        <PackageReference Include="Vit.Core" Version="2.2.0" />
+        <PackageReference Include="Vit.Core" Version="2.3.0" />
     </ItemGroup>
 
     <ItemGroup>

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

@@ -14,11 +14,11 @@
     </PropertyGroup>
 
     <ItemGroup>
-        <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="Microsoft.NET.Test.Sdk" Version="17.11.1" />
+        <PackageReference Include="MSTest.TestAdapter" Version="3.6.1" />
+        <PackageReference Include="MSTest.TestFramework" Version="3.6.1" />
 
-        <PackageReference Include="Vit.Core" Version="2.2.0" />
+        <PackageReference Include="Vit.Core" Version="2.3.0" />
     </ItemGroup>
 
     <ItemGroup>

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

@@ -14,11 +14,11 @@
     </PropertyGroup>
 
     <ItemGroup>
-        <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="Microsoft.NET.Test.Sdk" Version="17.11.1" />
+        <PackageReference Include="MSTest.TestAdapter" Version="3.6.1" />
+        <PackageReference Include="MSTest.TestFramework" Version="3.6.1" />
 
-        <PackageReference Include="Vit.Core" Version="2.2.0" />
+        <PackageReference Include="Vit.Core" Version="2.3.0" />
     </ItemGroup>
 
     <ItemGroup>

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

@@ -14,11 +14,11 @@
     </PropertyGroup>
 
     <ItemGroup>
-        <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="Microsoft.NET.Test.Sdk" Version="17.11.1" />
+        <PackageReference Include="MSTest.TestAdapter" Version="3.6.1" />
+        <PackageReference Include="MSTest.TestFramework" Version="3.6.1" />
 
-        <PackageReference Include="Vit.Core" Version="2.2.0" />
+        <PackageReference Include="Vit.Core" Version="2.3.0" />
     </ItemGroup>
 
     <ItemGroup>

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

@@ -14,11 +14,11 @@
     </PropertyGroup>
 
     <ItemGroup>
-        <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="Microsoft.NET.Test.Sdk" Version="17.11.1" />
+        <PackageReference Include="MSTest.TestAdapter" Version="3.6.1" />
+        <PackageReference Include="MSTest.TestFramework" Version="3.6.1" />
 
-        <PackageReference Include="Vit.Core" Version="2.2.0" />
+        <PackageReference Include="Vit.Core" Version="2.3.0" />
     </ItemGroup>
 
     <ItemGroup>

+ 4 - 11
test/Vitorm.Sqlite.MsTest/CommonTest/Truncate_Test.cs

@@ -18,27 +18,20 @@ namespace Vitorm.MsTest.CommonTest
             }
 
             dbContext.Truncate<User>();
-
             DataSource.WaitForUpdate();
-
             // assert
             {
                 var count = dbContext.Query<User>().Count();
                 Assert.AreEqual(0, count);
             }
 
-
-            var user = User.NewUser(id: 1, forAdd: true);
-            dbContext.Add(user);
-
+            dbContext.Add(User.NewUser(1, forAdd: true));
             DataSource.WaitForUpdate();
             // assert
             {
-                Assert.AreEqual(1, user.id);
-
-                var list = dbContext.Query<User>().ToList();
-                Assert.AreEqual(1, list.Count);
-                Assert.AreEqual(1, list[0].id);
+                var users = dbContext.Query<User>().ToList();
+                Assert.AreEqual(1, users.Count);
+                Assert.AreEqual(1, users[0].id);
             }
 
         }

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

@@ -14,11 +14,11 @@
     </PropertyGroup>
 
     <ItemGroup>
-        <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="Microsoft.NET.Test.Sdk" Version="17.11.1" />
+        <PackageReference Include="MSTest.TestAdapter" Version="3.6.1" />
+        <PackageReference Include="MSTest.TestFramework" Version="3.6.1" />
 
-        <PackageReference Include="Vit.Core" Version="2.2.0" />
+        <PackageReference Include="Vit.Core" Version="2.3.0" />
     </ItemGroup>
 
     <ItemGroup>