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(在线)
## 📚 文档