Skip to content

Commit f7ce4dc

Browse files
2881028810
28810
authored and
28810
committed
- 增加 人大金仓 Ado.Net 实现 FreeSql.Provider.KingbaseES #325
1 parent 7fcae30 commit f7ce4dc

Some content is hidden

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

55 files changed

+12596
-10
lines changed

Extensions/FreeSql.Generator/ConsoleApp.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ public ConsoleApp(string[] args, ManualResetEvent wait)
183183
case "oracle": ArgsDbType = DataType.Oracle; break;
184184
case "sqlite": ArgsDbType = DataType.Sqlite; break;
185185
case "dameng": ArgsDbType = DataType.Dameng; break;
186-
case "odbckingbasees": ArgsDbType = DataType.OdbcKingbaseES; break;
186+
case "kingbasees": ArgsDbType = DataType.KingbaseES; break;
187187
case "shentong": ArgsDbType = DataType.ShenTong; break;
188188
default: throw new ArgumentException($"-DB 参数错误,不支持的类型:\"{dbargs[0]}\"");
189189
}

Extensions/FreeSql.Generator/FreeSql.Generator.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@
3535

3636
<ItemGroup>
3737
<ProjectReference Include="..\..\Providers\FreeSql.Provider.Dameng\FreeSql.Provider.Dameng.csproj" />
38+
<ProjectReference Include="..\..\Providers\FreeSql.Provider.KingbaseES\FreeSql.Provider.KingbaseES.csproj" />
3839
<ProjectReference Include="..\..\Providers\FreeSql.Provider.MySqlConnector\FreeSql.Provider.MySqlConnector.csproj" />
39-
<ProjectReference Include="..\..\Providers\FreeSql.Provider.Odbc\FreeSql.Provider.Odbc.csproj" />
4040
<ProjectReference Include="..\..\Providers\FreeSql.Provider.Oracle\FreeSql.Provider.Oracle.csproj" />
4141
<ProjectReference Include="..\..\Providers\FreeSql.Provider.PostgreSQL\FreeSql.Provider.PostgreSQL.csproj" />
4242
<ProjectReference Include="..\..\Providers\FreeSql.Provider.ShenTong\FreeSql.Provider.ShenTong.csproj" />

Extensions/FreeSql.Generator/RazorModel.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ public string GetColumnAttribute(DbColumnInfo col, bool isInsertValueSql = false
112112
break;
113113
case DataType.PostgreSQL:
114114
case DataType.OdbcPostgreSQL:
115+
case DataType.KingbaseES:
115116
case DataType.OdbcKingbaseES:
116117
case DataType.ShenTong:
117118
switch (col.DbTypeTextFull.ToLower())
@@ -220,7 +221,7 @@ public string GetColumnDefaultValue(DbColumnInfo col, bool isInsertValueSql)
220221
else if ((cstype == typeof(string) && defval.StartsWith("'") && defval.EndsWith("'::character varying") ||
221222
cstype == typeof(Guid) && defval.StartsWith("'") && defval.EndsWith("'::uuid")
222223
) && (fsql.Ado.DataType == DataType.PostgreSQL || fsql.Ado.DataType == DataType.OdbcPostgreSQL ||
223-
fsql.Ado.DataType == DataType.OdbcKingbaseES ||
224+
fsql.Ado.DataType == DataType.KingbaseES || fsql.Ado.DataType == DataType.OdbcKingbaseES ||
224225
fsql.Ado.DataType == DataType.ShenTong))
225226
{
226227
defval = defval.Substring(1, defval.LastIndexOf("'::") - 1).Replace("''", "'");

FreeSql.DbContext/DbSet/DbSet.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,7 @@ bool CanAdd(TEntity data, bool isThrow)
277277
case DataType.OdbcSqlServer:
278278
case DataType.PostgreSQL:
279279
case DataType.OdbcPostgreSQL:
280+
case DataType.KingbaseES:
280281
case DataType.OdbcKingbaseES:
281282
case DataType.ShenTong:
282283
return true;

FreeSql.DbContext/DbSet/DbSetAsync.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ async Task AddPrivAsync(TEntity data, bool isCheck)
4141
case DataType.OdbcSqlServer:
4242
case DataType.PostgreSQL:
4343
case DataType.OdbcPostgreSQL:
44+
case DataType.KingbaseES:
4445
case DataType.OdbcKingbaseES:
4546
case DataType.ShenTong:
4647
if (_tableIdentitys.Length == 1 && _table.Primarys.Length == 1)
@@ -104,6 +105,7 @@ async public Task AddRangeAsync(IEnumerable<TEntity> data)
104105
case DataType.OdbcSqlServer:
105106
case DataType.PostgreSQL:
106107
case DataType.OdbcPostgreSQL:
108+
case DataType.KingbaseES:
107109
case DataType.OdbcKingbaseES:
108110
case DataType.ShenTong:
109111
await DbContextFlushCommandAsync();

FreeSql.DbContext/DbSet/DbSetSync.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ void AddPriv(TEntity data, bool isCheck)
4141
case DataType.OdbcSqlServer:
4242
case DataType.PostgreSQL:
4343
case DataType.OdbcPostgreSQL:
44+
case DataType.KingbaseES:
4445
case DataType.OdbcKingbaseES:
4546
case DataType.ShenTong:
4647
if (_tableIdentitys.Length == 1)
@@ -108,6 +109,7 @@ public void AddRange(IEnumerable<TEntity> data)
108109
case DataType.OdbcSqlServer:
109110
case DataType.PostgreSQL:
110111
case DataType.OdbcPostgreSQL:
112+
case DataType.KingbaseES:
111113
case DataType.OdbcKingbaseES:
112114
case DataType.ShenTong:
113115
DbContextFlushCommand();

FreeSql.DbContext/FreeSql.DbContext.xml

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.csproj

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
<ProjectReference Include="..\..\FreeSql.DbContext\FreeSql.DbContext.csproj" />
3939
<ProjectReference Include="..\..\FreeSql\FreeSql.csproj" />
4040
<ProjectReference Include="..\..\Providers\FreeSql.Provider.Dameng\FreeSql.Provider.Dameng.csproj" />
41+
<ProjectReference Include="..\..\Providers\FreeSql.Provider.KingbaseES\FreeSql.Provider.KingbaseES.csproj" />
4142
<ProjectReference Include="..\..\Providers\FreeSql.Provider.MsAccess\FreeSql.Provider.MsAccess.csproj" />
4243
<ProjectReference Include="..\..\Providers\FreeSql.Provider.MySql\FreeSql.Provider.MySql.csproj" />
4344
<ProjectReference Include="..\..\Providers\FreeSql.Provider.Oracle\FreeSql.Provider.Oracle.csproj" />
@@ -51,12 +52,15 @@
5152
<Reference Include="DmProvider">
5253
<HintPath>..\..\Providers\FreeSql.Provider.Dameng\lib\DmProvider\netstandard2.0\DmProvider.dll</HintPath>
5354
</Reference>
54-
<Reference Include="System.Data.OscarClient">
55-
<HintPath>..\..\Providers\FreeSql.Provider.ShenTong\lib\System.Data.OscarClient.dll</HintPath>
56-
</Reference>
57-
<Reference Include="Mono.Security">
58-
<HintPath>..\..\Providers\FreeSql.Provider.ShenTong\lib\Mono.Security.dll</HintPath>
59-
</Reference>
55+
<Reference Include="System.Data.OscarClient">
56+
<HintPath>..\..\Providers\FreeSql.Provider.ShenTong\lib\System.Data.OscarClient.dll</HintPath>
57+
</Reference>
58+
<Reference Include="Mono.Security">
59+
<HintPath>..\..\Providers\FreeSql.Provider.ShenTong\lib\Mono.Security.dll</HintPath>
60+
</Reference>
61+
<Reference Include="Kdbndp">
62+
<HintPath>..\..\Providers\FreeSql.Provider.KingbaseES\lib\Kdbndp.dll</HintPath>
63+
</Reference>
6064
</ItemGroup>
6165

6266
</Project>
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
using FreeSql.DataAnnotations;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using Xunit;
6+
7+
namespace FreeSql.Tests.KingbaseES
8+
{
9+
public class KingbaseESDeleteTest
10+
{
11+
12+
IDelete<Topic> delete => g.kingbaseES.Delete<Topic>(); //��������
13+
14+
[Table(Name = "tb_topic22211")]
15+
class Topic
16+
{
17+
[Column(IsIdentity = true, IsPrimary = true)]
18+
public int Id { get; set; }
19+
public int? Clicks { get; set; }
20+
public TestTypeInfo Type { get; set; }
21+
public string Title { get; set; }
22+
public DateTime CreateTime { get; set; }
23+
}
24+
25+
[Fact]
26+
public void Dywhere()
27+
{
28+
Assert.Null(g.kingbaseES.Delete<Topic>().ToSql());
29+
var sql = g.kingbaseES.Delete<Topic>(new[] { 1, 2 }).ToSql();
30+
Assert.Equal("DELETE FROM \"TB_TOPIC22211\" WHERE (\"ID\" IN (1,2))", sql);
31+
32+
sql = g.kingbaseES.Delete<Topic>(new Topic { Id = 1, Title = "test" }).ToSql();
33+
Assert.Equal("DELETE FROM \"TB_TOPIC22211\" WHERE (\"ID\" = 1)", sql);
34+
35+
sql = g.kingbaseES.Delete<Topic>(new[] { new Topic { Id = 1, Title = "test" }, new Topic { Id = 2, Title = "test" } }).ToSql();
36+
Assert.Equal("DELETE FROM \"TB_TOPIC22211\" WHERE (\"ID\" IN (1,2))", sql);
37+
38+
sql = g.kingbaseES.Delete<Topic>(new { id = 1 }).ToSql();
39+
Assert.Equal("DELETE FROM \"TB_TOPIC22211\" WHERE (\"ID\" = 1)", sql);
40+
41+
sql = g.kingbaseES.Delete<MultiPkTopic>(new[] { new { Id1 = 1, Id2 = 10 }, new { Id1 = 2, Id2 = 20 } }).ToSql();
42+
Assert.Equal("DELETE FROM \"MULTIPKTOPIC\" WHERE (\"ID1\" = 1 AND \"ID2\" = 10 OR \"ID1\" = 2 AND \"ID2\" = 20)", sql);
43+
}
44+
class MultiPkTopic
45+
{
46+
[Column(IsPrimary = true)]
47+
public int Id1 { get; set; }
48+
[Column(IsPrimary = true)]
49+
public int Id2 { get; set; }
50+
public int Clicks { get; set; }
51+
public string Title { get; set; }
52+
public DateTime CreateTime { get; set; }
53+
}
54+
55+
[Fact]
56+
public void Where()
57+
{
58+
var sql = delete.Where(a => a.Id == 1).ToSql().Replace("\r\n", "");
59+
Assert.Equal("DELETE FROM \"TB_TOPIC22211\" WHERE (\"ID\" = 1)", sql);
60+
61+
sql = delete.Where("id = :id", new { id = 1 }).ToSql().Replace("\r\n", "");
62+
Assert.Equal("DELETE FROM \"TB_TOPIC22211\" WHERE (id = :id)", sql);
63+
64+
var item = new Topic { Id = 1, Title = "newtitle" };
65+
sql = delete.Where(item).ToSql().Replace("\r\n", "");
66+
Assert.Equal("DELETE FROM \"TB_TOPIC22211\" WHERE (\"ID\" = 1)", sql);
67+
68+
var items = new List<Topic>();
69+
for (var a = 0; a < 10; a++) items.Add(new Topic { Id = a + 1, Title = $"newtitle{a}", Clicks = a * 100 });
70+
71+
sql = delete.Where(items).ToSql().Replace("\r\n", "");
72+
Assert.Equal("DELETE FROM \"TB_TOPIC22211\" WHERE (\"ID\" IN (1,2,3,4,5,6,7,8,9,10))", sql);
73+
}
74+
[Fact]
75+
public void ExecuteAffrows()
76+
{
77+
78+
var id = g.kingbaseES.Insert<Topic>(new Topic { Title = "xxxx", CreateTime = DateTime.Now }).ExecuteIdentity();
79+
Assert.Equal(1, delete.Where(a => a.Id == id).ExecuteAffrows());
80+
}
81+
[Fact]
82+
public void ExecuteDeleted()
83+
{
84+
85+
//var item = g.kingbaseES.Insert<Topic>(new Topic { Title = "xxxx", CreateTime = DateTime.Now }).ExecuteInserted();
86+
//Assert.Equal(item[0].Id, delete.Where(a => a.Id == item[0].Id).ExecuteDeleted()[0].Id);
87+
}
88+
89+
[Fact]
90+
public void AsTable()
91+
{
92+
Assert.Null(g.kingbaseES.Delete<Topic>().ToSql());
93+
var sql = g.kingbaseES.Delete<Topic>(new[] { 1, 2 }).AsTable(a => "TopicAsTable").ToSql();
94+
Assert.Equal("DELETE FROM \"TOPICASTABLE\" WHERE (\"ID\" IN (1,2))", sql);
95+
96+
sql = g.kingbaseES.Delete<Topic>(new Topic { Id = 1, Title = "test" }).AsTable(a => "TopicAsTable").ToSql();
97+
Assert.Equal("DELETE FROM \"TOPICASTABLE\" WHERE (\"ID\" = 1)", sql);
98+
99+
sql = g.kingbaseES.Delete<Topic>(new[] { new Topic { Id = 1, Title = "test" }, new Topic { Id = 2, Title = "test" } }).AsTable(a => "TopicAsTable").ToSql();
100+
Assert.Equal("DELETE FROM \"TOPICASTABLE\" WHERE (\"ID\" IN (1,2))", sql);
101+
102+
sql = g.kingbaseES.Delete<Topic>(new { id = 1 }).AsTable(a => "TopicAsTable").ToSql();
103+
Assert.Equal("DELETE FROM \"TOPICASTABLE\" WHERE (\"ID\" = 1)", sql);
104+
}
105+
}
106+
}

0 commit comments

Comments
 (0)