Skip to content

Commit f434418

Browse files
2881028810
authored andcommitted
## v0.9.17 (ODBC)
- 增加 FreeSql.Provider.Odbc,实现 Oracle/SqlServer/MySql 的 Odbc 访问提供; - 增加 FreeSqlBuilder.UseConnectionString 参数 providerType,可解决因包版本冲突时,可能无法反射获得 FreeSql.Provider 对应的类型,通常这个参数不需要设置; - 优化 MaxLength 特性,当指定为 -1 时 DbType 会分别映射类型 text/nvarchar(max)/nvarchar2(4000);
1 parent 8d92ccd commit f434418

File tree

123 files changed

+31796
-112
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

123 files changed

+31796
-112
lines changed

Examples/base_entity/base_entity.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>netcoreapp2.2</TargetFramework>
5+
<TargetFramework>netcoreapp2.1</TargetFramework>
66
</PropertyGroup>
77

88
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

Examples/benchmarker/benchmarker.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>netcoreapp2.2</TargetFramework>
5+
<TargetFramework>netcoreapp2.1</TargetFramework>
66
</PropertyGroup>
77

88
<ItemGroup>

Extensions/FreeSql.Extensions.BaseEntity/FreeSql.Extensions.BaseEntity.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<TargetFrameworks>netstandard2.0</TargetFrameworks>
5-
<Version>0.9.16</Version>
5+
<Version>0.9.17</Version>
66
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
77
<Authors>YeXiangQin</Authors>
88
<Description>BaseEntity 是一种极简单的 CodeFirst 开发方式,特别对单表或多表CRUD,利用继承节省了每个实体类的重复属性(创建时间、ID等字段),软件删除等功能,进行 crud 操作时不必时常考虑仓储的使用.</Description>

Extensions/FreeSql.Extensions.JsonMap/FreeSql.Extensions.JsonMap.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>
5-
<Version>0.9.16</Version>
5+
<Version>0.9.17</Version>
66
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
77
<Authors>YeXiangQin</Authors>
88
<Description>FreeSql 扩展包,可实现实体类属性为对象时,以JSON形式映射存储.</Description>

Extensions/FreeSql.Extensions.LazyLoading/FreeSql.Extensions.LazyLoading.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>
5-
<Version>0.9.16</Version>
5+
<Version>0.9.17</Version>
66
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
77
<Authors>YeXiangQin</Authors>
88
<Description>FreeSql 扩展包,可实现【延时加载】属性.</Description>

FreeSql.DbContext/FreeSql.DbContext.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>
5-
<Version>0.9.16</Version>
5+
<Version>0.9.17</Version>
66
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
77
<Authors>YeXiangQin</Authors>
88
<Description>FreeSql is the most convenient ORM in dotnet. It supports Mysql, Postgresql, SqlServer, Oracle and Sqlite.</Description>

FreeSql.Repository/FreeSql.Repository.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>
5-
<Version>0.9.16</Version>
5+
<Version>0.9.17</Version>
66
<Authors>YeXiangQin</Authors>
77
<Description>FreeSql Implementation of General Repository, Support MySql/SqlServer/PostgreSQL/Oracle/Sqlite, and read/write separation、and split table.</Description>
88
<PackageProjectUrl>https://github.com/2881099/FreeSql/wiki/Repository</PackageProjectUrl>

FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/FreeSql.Tests.Provider.MySqlConnector.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>netcoreapp2.2</TargetFramework>
4+
<TargetFramework>netcoreapp2.1</TargetFramework>
55

66
<IsPackable>false</IsPackable>
77
</PropertyGroup>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>netcoreapp2.1</TargetFramework>
5+
6+
<IsPackable>false</IsPackable>
7+
</PropertyGroup>
8+
9+
<ItemGroup>
10+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
11+
<PackageReference Include="xunit" Version="2.4.0" />
12+
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
13+
</ItemGroup>
14+
15+
<ItemGroup>
16+
<ProjectReference Include="..\..\Extensions\FreeSql.Extensions.LazyLoading\FreeSql.Extensions.LazyLoading.csproj" />
17+
<ProjectReference Include="..\..\FreeSql.DbContext\FreeSql.DbContext.csproj" />
18+
<ProjectReference Include="..\..\FreeSql\FreeSql.csproj" />
19+
<ProjectReference Include="..\..\Providers\FreeSql.Provider.Odbc\FreeSql.Provider.Odbc.csproj" />
20+
</ItemGroup>
21+
22+
</Project>
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
using FreeSql.DataAnnotations;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using Xunit;
6+
7+
namespace FreeSql.Tests.Odbc.MySql
8+
{
9+
public class MySqlDeleteTest
10+
{
11+
12+
IDelete<Topic> delete => g.mysql.Delete<Topic>(); //��������
13+
14+
[Table(Name = "tb_topic")]
15+
class Topic
16+
{
17+
[Column(IsIdentity = true, IsPrimary = true)]
18+
public int Id { get; set; }
19+
public int Clicks { get; set; }
20+
public string Title { get; set; }
21+
public DateTime CreateTime { get; set; }
22+
}
23+
24+
[Fact]
25+
public void Dywhere()
26+
{
27+
Assert.Null(g.mysql.Delete<Topic>().ToSql());
28+
var sql = g.mysql.Delete<Topic>(new[] { 1, 2 }).ToSql();
29+
Assert.Equal("DELETE FROM `tb_topic` WHERE (`Id` = 1 OR `Id` = 2)", sql);
30+
31+
sql = g.mysql.Delete<Topic>(new Topic { Id = 1, Title = "test" }).ToSql();
32+
Assert.Equal("DELETE FROM `tb_topic` WHERE (`Id` = 1)", sql);
33+
34+
sql = g.mysql.Delete<Topic>(new[] { new Topic { Id = 1, Title = "test" }, new Topic { Id = 2, Title = "test" } }).ToSql();
35+
Assert.Equal("DELETE FROM `tb_topic` WHERE (`Id` = 1 OR `Id` = 2)", sql);
36+
37+
sql = g.mysql.Delete<Topic>(new { id = 1 }).ToSql();
38+
Assert.Equal("DELETE FROM `tb_topic` WHERE (`Id` = 1)", sql);
39+
}
40+
41+
[Fact]
42+
public void Where()
43+
{
44+
var sql = delete.Where(a => a.Id == 1).ToSql().Replace("\r\n", "");
45+
Assert.Equal("DELETE FROM `tb_topic` WHERE (`Id` = 1)", sql);
46+
47+
sql = delete.Where("id = @id", new { id = 1 }).ToSql().Replace("\r\n", "");
48+
Assert.Equal("DELETE FROM `tb_topic` WHERE (id = @id)", sql);
49+
50+
var item = new Topic { Id = 1, Title = "newtitle" };
51+
sql = delete.Where(item).ToSql().Replace("\r\n", "");
52+
Assert.Equal("DELETE FROM `tb_topic` WHERE (`Id` = 1)", sql);
53+
54+
var items = new List<Topic>();
55+
for (var a = 0; a < 10; a++) items.Add(new Topic { Id = a + 1, Title = $"newtitle{a}", Clicks = a * 100 });
56+
57+
sql = delete.Where(items).ToSql().Replace("\r\n", "");
58+
Assert.Equal("DELETE FROM `tb_topic` WHERE (`Id` IN (1,2,3,4,5,6,7,8,9,10))", sql);
59+
}
60+
[Fact]
61+
public void WhereExists()
62+
{
63+
64+
}
65+
[Fact]
66+
public void ExecuteAffrows()
67+
{
68+
69+
var id = g.mysql.Insert<Topic>(new Topic { Title = "xxxx" }).ExecuteIdentity();
70+
Assert.Equal(1, delete.Where(a => a.Id == id).ExecuteAffrows());
71+
}
72+
[Fact]
73+
public void ExecuteDeleted()
74+
{
75+
76+
//delete.Where(a => a.Id > 0).ExecuteDeleted();
77+
}
78+
79+
[Fact]
80+
public void AsTable()
81+
{
82+
Assert.Null(g.mysql.Delete<Topic>().ToSql());
83+
var sql = g.mysql.Delete<Topic>(new[] { 1, 2 }).AsTable(a => "TopicAsTable").ToSql();
84+
Assert.Equal("DELETE FROM `TopicAsTable` WHERE (`Id` = 1 OR `Id` = 2)", sql);
85+
86+
sql = g.mysql.Delete<Topic>(new Topic { Id = 1, Title = "test" }).AsTable(a => "TopicAsTable").ToSql();
87+
Assert.Equal("DELETE FROM `TopicAsTable` WHERE (`Id` = 1)", sql);
88+
89+
sql = g.mysql.Delete<Topic>(new[] { new Topic { Id = 1, Title = "test" }, new Topic { Id = 2, Title = "test" } }).AsTable(a => "TopicAsTable").ToSql();
90+
Assert.Equal("DELETE FROM `TopicAsTable` WHERE (`Id` = 1 OR `Id` = 2)", sql);
91+
92+
sql = g.mysql.Delete<Topic>(new { id = 1 }).AsTable(a => "TopicAsTable").ToSql();
93+
Assert.Equal("DELETE FROM `TopicAsTable` WHERE (`Id` = 1)", sql);
94+
}
95+
}
96+
}

0 commit comments

Comments
 (0)