diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md new file mode 100644 index 00000000..9184a937 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -0,0 +1,34 @@ +--- +name: "Bug Report 🐛" +about: 这里只能提交 Bug,提交其他无关信息会被关闭 +title: '' +labels: Bug +assignees: '' + +--- + + + +#### 问题描述及重现步骤: + + +#### 数据库的具体版本 +``` + +``` + +#### 安装的包 +``` + +``` + +#### .net framework/. net core? 及具体版本 +``` + +``` \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..fa238d4f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,9 @@ +blank_issues_enabled: true + +contact_links: + - name: 使用问题 🗨️ + url: https://github.com/dotnetcore/FreeSql/discussions + about: 使用过程中的疑问请发布到这里 + - name: 文档错误 📚 + url: https://github.com/2881099/FreeSql.Wiki.VuePress/issues/new + about: 关于文档相关的错误请提交到这里 diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md new file mode 100644 index 00000000..0106f2d6 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -0,0 +1,23 @@ +--- +name: "Feature Request 🚀" +about: 这里只能提交 Feature 请求,提交其他无关信息会被关闭 +title: '' +labels: Feature +assignees: '' + +--- + + + +#### Feature 特性 + + +#### 简要描述原因 + + +#### 使用场景 diff --git a/Directory.Build.props b/Directory.Build.props new file mode 100644 index 00000000..6168555f --- /dev/null +++ b/Directory.Build.props @@ -0,0 +1,13 @@ + + + + https://github.com/dotnetcore/FreeSql + true + true + $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb + + + + + + diff --git a/Examples/benchmarker/Program.cs b/Examples/benchmarker/Program.cs index 43d35497..d84836c5 100644 --- a/Examples/benchmarker/Program.cs +++ b/Examples/benchmarker/Program.cs @@ -2,10 +2,10 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -using Microsoft.Data.SqlClient; using System.Linq; using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Running; +using Microsoft.Data.SqlClient; using Microsoft.EntityFrameworkCore; using SqlSugar; @@ -28,7 +28,7 @@ namespace FreeSql.Bechmarker public class Orm { public static IFreeSql fsql = new FreeSql.FreeSqlBuilder() - .UseConnectionString(FreeSql.DataType.SqlServer, + .UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=20", typeof(FreeSql.SqlServer.SqlServerProvider<>)) //.UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;Max pool size=20") @@ -286,4 +286,3 @@ values('{song.Create_time.Value.ToString("yyyy-MM-dd HH:mm:ss")}',{(song.Is_dele public string Url { get; set; } } } - diff --git a/Examples/benchmarker/benchmarker.csproj b/Examples/benchmarker/benchmarker.csproj index 92101464..93e37a92 100644 --- a/Examples/benchmarker/benchmarker.csproj +++ b/Examples/benchmarker/benchmarker.csproj @@ -10,18 +10,11 @@ + - - ..\..\FreeSql\bin\Release\netstandard2.0\FreeSql.dll - - - ..\..\Providers\FreeSql.Provider.SqlServer\bin\Release\netstandard2.0\FreeSql.Provider.SqlServer.dll - - - ..\..\..\SqlSugar-SqlSugar5 (1)\SqlSugar-SqlSugar5\Src\Asp.NetCore2\SqlSeverTest\SqlSugar\bin\Release\netstandard2.0\SqlSugar.dll - + diff --git a/FreeSql.All/FreeSql.All.csproj b/FreeSql.All/FreeSql.All.csproj index 09b675c2..58c93548 100644 --- a/FreeSql.All/FreeSql.All.csproj +++ b/FreeSql.All/FreeSql.All.csproj @@ -1,39 +1,39 @@  - - netstandard2.0;net45;net40 - 2.5.200 - true - FreeSql;ncc;YeXiangQin - FreeSql 全家桶,懒人专用 - https://github.com/2881099/FreeSql.DbContext - FreeSql ORM DbContext - git - MIT - $(AssemblyName) - logo.png - $(AssemblyName) - true - true - true - key.snk - false - + + netstandard2.0;net45;net40 + 2.5.100 + true + FreeSql;ncc;YeXiangQin + FreeSql 全家桶,懒人专用 + https://github.com/2881099/FreeSql + FreeSql ORM DbContext + git + MIT + $(AssemblyName) + logo.png + $(AssemblyName) + true + true + true + key.snk + false + - - - + + + - - - - - - - - - - - + + + + + + + + + + + diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/FreeSql.Tests.Provider.MySqlConnector.csproj b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/FreeSql.Tests.Provider.MySqlConnector.csproj index dd790895..b2798928 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/FreeSql.Tests.Provider.MySqlConnector.csproj +++ b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/FreeSql.Tests.Provider.MySqlConnector.csproj @@ -1,7 +1,7 @@  - net5.0 + net5.0;netcoreapp3.1; false diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/FreeSqlMySqlConnectorGlobalExtensionsTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/FreeSqlMySqlConnectorGlobalExtensionsTest.cs new file mode 100644 index 00000000..c12c665a --- /dev/null +++ b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/FreeSqlMySqlConnectorGlobalExtensionsTest.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Xunit; + +namespace FreeSql.Tests.Provider.MySqlConnector +{ + public class FreeSqlMySqlConnectorGlobalExtensionsTest + { + class BulkCopyValue + { + public Guid id { get; set; } + public DateTime createtime { get; set; } + } + [Fact] + public async Task ExecuteMySqlBulkCopyAsync() + { + var fsql = g.mysql; + fsql.CodeFirst.SyncStructure(); + + List bulkCopyValues = new List(); + for (var i = 0; i < 1000; i++) + { + bulkCopyValues.Add(new BulkCopyValue() { createtime = DateTime.Now }); + } + await fsql.Insert().AppendData(bulkCopyValues).ExecuteMySqlBulkCopyAsync(); + } + } +} diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/g.cs b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/g.cs index efaeec3a..cb2c3de6 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/g.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/g.cs @@ -8,7 +8,7 @@ public class g { static Lazy mysqlLazy = new Lazy(() => new FreeSql.FreeSqlBuilder() - .UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd_mysqlconnector;Charset=utf8;SslMode=none;Max pool size=10") + .UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd_mysqlconnector;Charset=utf8;SslMode=none;Max pool size=10;AllowLoadLocalInfile=true") //.UseConnectionFactory(FreeSql.DataType.MySql, () => new MySql.Data.MySqlClient.MySqlConnection("Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd_mysqlconnector;Charset=utf8;SslMode=none;")) //.UseConnectionString(FreeSql.DataType.MySql, "Data Source=192.168.164.10;Port=33061;User ID=root;Password=root;Initial Catalog=cccddd_mysqlconnector;Charset=utf8;SslMode=none;Max pool size=10") .UseAutoSyncStructure(true) diff --git a/FreeSql.sln b/FreeSql.sln index 7ba3a403..6849c8a8 100644 --- a/FreeSql.sln +++ b/FreeSql.sln @@ -5,12 +5,6 @@ VisualStudioVersion = 16.0.29324.140 MinimumVisualStudioVersion = 15.0.26124.0 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FreeSql", "FreeSql\FreeSql.csproj", "{AF9C50EC-6EB6-494B-9B3B-7EDBA6FD0EBB}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Docs", "Docs", "{C6A74E2A-6660-473D-8852-B1D8348DB4E9}" - ProjectSection(SolutionItems) = preProject - readme.md = readme.md - README.zh-CN.md = README.zh-CN.md - EndProjectSection -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Examples", "Examples", "{94C8A78D-AA15-47B2-A348-530CD86BFC1B}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "restful", "Examples\restful\restful.csproj", "{83D10565-AF9D-4EDC-8FB8-8C962A843F97}" @@ -93,6 +87,20 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FreeSql.Provider.Firebird", EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FreeSql.Provider.Custom", "Providers\FreeSql.Provider.Custom\FreeSql.Provider.Custom.csproj", "{0DBAA21C-39B2-4AAD-A43D-88E67ED239D1}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{226EB372-5786-44ED-A6B7-3B1EAC4CF5B9}" + ProjectSection(SolutionItems) = preProject + .editorconfig = .editorconfig + .gitattributes = .gitattributes + .gitignore = .gitignore + .github\ISSUE_TEMPLATE\bug-report.md = .github\ISSUE_TEMPLATE\bug-report.md + .github\ISSUE_TEMPLATE\config.yml = .github\ISSUE_TEMPLATE\config.yml + Directory.Build.props = Directory.Build.props + .github\ISSUE_TEMPLATE\feature-request.md = .github\ISSUE_TEMPLATE\feature-request.md + LICENSE = LICENSE + README.md = README.md + README.zh-CN.md = README.zh-CN.md + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU diff --git a/Providers/FreeSql.Provider.MySqlConnector/FreeSql.Provider.MySqlConnector.csproj b/Providers/FreeSql.Provider.MySqlConnector/FreeSql.Provider.MySqlConnector.csproj index b5fcaf30..221b913d 100644 --- a/Providers/FreeSql.Provider.MySqlConnector/FreeSql.Provider.MySqlConnector.csproj +++ b/Providers/FreeSql.Provider.MySqlConnector/FreeSql.Provider.MySqlConnector.csproj @@ -1,8 +1,8 @@  - netstandard2.0;net50;net45 - 2.5.200 + netstandard2.0;net50;net45;netstandard2.1;netcoreapp2.1;netcoreapp3.1; + 2.5.100 true FreeSql;ncc;YeXiangQin FreeSql 数据库实现,基于 MySql 5.6,Ado.Net 驱动是 MySqlConnector diff --git a/Providers/FreeSql.Provider.Sqlite/SqliteExpression.cs b/Providers/FreeSql.Provider.Sqlite/SqliteExpression.cs index b6413643..eebdb488 100644 --- a/Providers/FreeSql.Provider.Sqlite/SqliteExpression.cs +++ b/Providers/FreeSql.Provider.Sqlite/SqliteExpression.cs @@ -1,10 +1,10 @@ -using FreeSql.Internal; -using System; +using System; using System.Collections; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Text.RegularExpressions; +using FreeSql.Internal; namespace FreeSql.Sqlite { @@ -309,10 +309,10 @@ namespace FreeSql.Sqlite case "IndexOf": var indexOfFindStr = getExp(exp.Arguments[0]); //if (exp.Arguments.Count > 1 && exp.Arguments[1].Type.FullName == "System.Int32") { - // var locateArgs1 = getExp(exp.Arguments[1]); - // if (long.TryParse(locateArgs1, out var testtrylng2)) locateArgs1 = (testtrylng2 + 1).ToString(); - // else locateArgs1 += "+1"; - // return $"(instr({left}, {indexOfFindStr}, {locateArgs1})-1)"; + // var locateArgs1 = getExp(exp.Arguments[1]); + // if (long.TryParse(locateArgs1, out var testtrylng2)) locateArgs1 = (testtrylng2 + 1).ToString(); + // else locateArgs1 += "+1"; + // return $"(instr({left}, {indexOfFindStr}, {locateArgs1})-1)"; //} return $"(instr({left}, {indexOfFindStr})-1)"; case "PadLeft": @@ -417,7 +417,7 @@ namespace FreeSql.Sqlite case "AddDays": return $"datetime({left},({args1})||' days')"; case "AddHours": return $"datetime({left},({args1})||' hours')"; case "AddMilliseconds": return $"datetime({left},(({args1})/1000)||' seconds')"; - case "AddMinutes": return $"datetime({left},({args1})||' seconds')"; + case "AddMinutes": return $"datetime({left},({args1})||' minutes')"; case "AddMonths": return $"datetime({left},({args1})||' months')"; case "AddSeconds": return $"datetime({left},({args1})||' seconds')"; case "AddTicks": return $"datetime({left},(({args1})/10000000)||' seconds')"; @@ -481,7 +481,7 @@ namespace FreeSql.Sqlite var argsSptsA = argsSpts[a]; if (argsSptsA.StartsWith("'")) argsSptsA = argsSptsA.Substring(1); if (argsSptsA.EndsWith("'")) argsSptsA = argsSptsA.Remove(argsSptsA.Length - 1); - argsSpts[a] = argsFinds.Any(m => argsSptsA.Contains(m)) ? $"strftime('{argsSptsA}',{left})" : $"'{argsSptsA}'"; + argsSpts[a] = argsFinds.Any(m => argsSptsA.Contains(m)) ? $"strftime('{argsSptsA}',{left})" : $"'{argsSptsA}'"; break; } } diff --git a/README.md b/README.md index b44fdc19..23acdc3a 100644 --- a/README.md +++ b/README.md @@ -22,13 +22,13 @@ FreeSql is a powerful O/RM component, supports .NET Core 2.1+, .NET Framework 4. - 📃 Support Read/Write separation, Splitting Table/Database, Global filters, Optimistic and pessimistic locker. - 🌳 Support MySql/SqlServer/PostgreSQL/Oracle/Sqlite/Firebird/达梦/人大金仓/神舟通用/翰高/华为GaussDB/Access, etc. -QQ Groups:4336577(full)、**8578575(available)**、**52508226(available)** +QQ Groups:4336577(full)、**8578575(full)**、**52508226(available)** ## 📚 Documentation | | | - | -| [新手上路](https://www.cnblogs.com/FreeSql/p/11531300.html)  \|  [Select](https://github.com/2881099/FreeSql/wiki/%e6%9f%a5%e8%af%a2)  \|  [Update](https://github.com/2881099/FreeSql/wiki/%e4%bf%ae%e6%94%b9)  \|  [Insert](https://github.com/2881099/FreeSql/wiki/%e6%b7%bb%e5%8a%a0)  \|  [Delete](https://github.com/2881099/FreeSql/wiki/%e5%88%a0%e9%99%a4)  \|  [FAQ](https://github.com/dotnetcore/FreeSql/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)  | +| [Get started](https://www.cnblogs.com/FreeSql/p/11531300.html)  \|  [Select](https://github.com/2881099/FreeSql/wiki/%e6%9f%a5%e8%af%a2)  \|  [Update](https://github.com/2881099/FreeSql/wiki/%e4%bf%ae%e6%94%b9)  \|  [Insert](https://github.com/2881099/FreeSql/wiki/%e6%b7%bb%e5%8a%a0)  \|  [Delete](https://github.com/2881099/FreeSql/wiki/%e5%88%a0%e9%99%a4)  \|  [FAQ](https://github.com/dotnetcore/FreeSql/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)  | | [Expression](https://github.com/2881099/FreeSql/wiki/%e8%a1%a8%e8%be%be%e5%bc%8f%e5%87%bd%e6%95%b0)  \|  [CodeFirst](https://github.com/2881099/FreeSql/wiki/CodeFirst)  \|  [DbFirst](https://github.com/2881099/FreeSql/wiki/DbFirst)  \|  [Filters](https://github.com/2881099/FreeSql/wiki/%e8%bf%87%e6%bb%a4%e5%99%a8)  \|  [AOP](https://github.com/2881099/FreeSql/wiki/AOP)  | | [Repository](https://github.com/2881099/FreeSql/wiki/Repository)  \|  [UnitOfWork](https://github.com/2881099/FreeSql/wiki/%e5%b7%a5%e4%bd%9c%e5%8d%95%e5%85%83)  \|  [DbContext](https://github.com/2881099/FreeSql/wiki/DbContext)  \|  [ADO](https://github.com/2881099/FreeSql/wiki/ADO)  | | [Read/Write](https://github.com/2881099/FreeSql/wiki/%e8%af%bb%e5%86%99%e5%88%86%e7%a6%bb)  \|  [Splitting Table](https://github.com/2881099/FreeSql/wiki/%e5%88%86%e8%a1%a8%e5%88%86%e5%ba%93)  \|  [Hide tech](https://github.com/2881099/FreeSql/wiki/%E9%AA%9A%E6%93%8D%E4%BD%9C)  \|  [*Update Notes*](https://github.com/2881099/FreeSql/wiki/%e6%9b%b4%e6%96%b0%e6%97%a5%e5%bf%97)  | diff --git a/README.zh-CN.md b/README.zh-CN.md index 3873c4fd..d38cc6a8 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -22,7 +22,7 @@ FreeSql 是一款功能强大的对象关系映射(O/RM)组件,支持 .NET - 📃 支持 读写分离、分表分库、过滤器、乐观锁、悲观锁; - 🌳 支持 MySql/SqlServer/PostgreSQL/Oracle/Sqlite/Firebird/达梦/人大金仓/神舟通用/翰高/华为GaussDB/Access 等数据库; -QQ群:4336577(已满)、8578575(在线)、52508226(在线) +QQ群:4336577(已满)、8578575(已满)、52508226(在线) ## 📚 文档