Skip to content

Commit d197599

Browse files
authored
Merge pull request #965 from gbasecontributors/master
support gbase8s orm
2 parents 563f695 + fdcb76e commit d197599

Some content is hidden

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

53 files changed

+12244
-187
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[*.cs]
2+
3+
# xUnit2000: Constants and literals should be the expected argument
4+
dotnet_diagnostic.xUnit2000.severity = none
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net5.0</TargetFramework>
5+
<IsPackable>false</IsPackable>
6+
</PropertyGroup>
7+
8+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
9+
<DocumentationFile>FreeSql.Tests.Provider.GBase.xml</DocumentationFile>
10+
<WarningLevel>3</WarningLevel>
11+
<NoWarn>1701;1702;1591</NoWarn>
12+
<!--<Prefer32Bit>false</Prefer32Bit>
13+
<PlatformTarget>x86</PlatformTarget>-->
14+
</PropertyGroup>
15+
16+
<ItemGroup>
17+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
18+
<PackageReference Include="xunit" Version="2.4.1" />
19+
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
20+
<PrivateAssets>all</PrivateAssets>
21+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
22+
</PackageReference>
23+
</ItemGroup>
24+
25+
<ItemGroup>
26+
<ProjectReference Include="..\..\Extensions\FreeSql.Extensions.LazyLoading\FreeSql.Extensions.LazyLoading.csproj" />
27+
<ProjectReference Include="..\..\Extensions\FreeSql.Extensions.Linq\FreeSql.Extensions.Linq.csproj" />
28+
<ProjectReference Include="..\..\FreeSql.DbContext\FreeSql.DbContext.csproj" />
29+
<ProjectReference Include="..\..\FreeSql\FreeSql.csproj" />
30+
<ProjectReference Include="..\..\Providers\FreeSql.Provider.GBase\FreeSql.Provider.GBase.csproj" />
31+
</ItemGroup>
32+
33+
<ItemGroup>
34+
<Reference Include="GeneralData.EntityFrameworkCore.GBase.DataProvider">
35+
<HintPath>d:\testcode\GeneralData.EntityFrameworkCore.GBase.DataProvider.dll</HintPath>
36+
</Reference>
37+
</ItemGroup>
38+
</Project>

FreeSql.Tests/FreeSql.Tests.Provider.GBase/FreeSql.Tests.Provider.GBase.xml

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
using FreeSql.DataAnnotations;
2+
using IBM.Data.Informix;
3+
using System;
4+
using System.Collections.Generic;
5+
using System.Linq;
6+
using Xunit;
7+
8+
namespace FreeSql.Tests.GBase
9+
{
10+
public class GBaseDeleteTest
11+
{
12+
13+
IDelete<Topic> delete => g.gbase.Delete<Topic>();
14+
15+
[Table(Name = "tb_topic_del")]
16+
class Topic
17+
{
18+
[Column(IsIdentity = true, IsPrimary = true)]
19+
public int Id { get; set; }
20+
public int Clicks { 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.gbase.Delete<Topic>().ToSql());
29+
var sql = g.gbase.Delete<Topic>(new[] { 1, 2 }).ToSql();
30+
Assert.Equal("DELETE FROM tb_topic_del WHERE (Id IN (1,2))", sql);
31+
32+
sql = g.gbase.Delete<Topic>(new Topic { Id = 1, Title = "test" }).ToSql();
33+
Assert.Equal("DELETE FROM tb_topic_del WHERE (Id = 1)", sql);
34+
35+
sql = g.gbase.Delete<Topic>(new[] { new Topic { Id = 1, Title = "test" }, new Topic { Id = 2, Title = "test" } }).ToSql();
36+
Assert.Equal("DELETE FROM tb_topic_del WHERE (Id IN (1,2))", sql);
37+
38+
sql = g.gbase.Delete<Topic>(new { id = 1 }).ToSql();
39+
Assert.Equal("DELETE FROM tb_topic_del WHERE (Id = 1)", sql);
40+
41+
sql = g.gbase.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_topic_del WHERE (Id = 1)", sql);
60+
61+
sql = delete.Where("id = @id", new { id = 1 }).ToSql().Replace("\r\n", "");
62+
Assert.Equal("DELETE FROM tb_topic_del 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_topic_del 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_topic_del 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.gbase.Insert<Topic>(new Topic { Title = "xxxx" }).ExecuteIdentity();
79+
Assert.Equal(1, delete.Where(a => a.Id == id).ExecuteAffrows());
80+
}
81+
[Fact]
82+
public void ExecuteDeleted()
83+
{
84+
Assert.Throws<NotImplementedException>(() => delete.Where(a => a.Id > 0).ExecuteDeleted());
85+
}
86+
87+
[Fact]
88+
public void AsTable()
89+
{
90+
//var connectionBuilder = new IfxConnectionStringBuilder
91+
//{
92+
// Host = "192.168.164.134",
93+
// Service = "9088",
94+
// Server = "gbase01",
95+
// Database = "testdb",
96+
// UID = "gbasedbt",
97+
// Pwd = "GBase123",
98+
// DbLocale = "zh_CN.utf8",
99+
// ClientLocale = "zh_CN.utf8",
100+
// PersistSecurityInfo = true
101+
//};
102+
//using (IfxConnection conn = new IfxConnection(connectionBuilder.ConnectionString))
103+
//{
104+
// conn.Open();
105+
106+
// var cmd = conn.CreateCommand();
107+
// cmd.CommandText = "select 1 from dual";
108+
// var val = cmd.ExecuteScalar();
109+
110+
// conn.Close();
111+
//}
112+
113+
114+
Assert.Null(g.gbase.Delete<Topic>().ToSql());
115+
var sql = g.gbase.Delete<Topic>(new[] { 1, 2 }).AsTable(a => "TopicAsTable").ToSql();
116+
Assert.Equal("DELETE FROM TopicAsTable WHERE (Id IN (1,2))", sql);
117+
118+
sql = g.gbase.Delete<Topic>(new Topic { Id = 1, Title = "test" }).AsTable(a => "TopicAsTable").ToSql();
119+
Assert.Equal("DELETE FROM TopicAsTable WHERE (Id = 1)", sql);
120+
121+
sql = g.gbase.Delete<Topic>(new[] { new Topic { Id = 1, Title = "test" }, new Topic { Id = 2, Title = "test" } }).AsTable(a => "TopicAsTable").ToSql();
122+
Assert.Equal("DELETE FROM TopicAsTable WHERE (Id IN (1,2))", sql);
123+
124+
sql = g.gbase.Delete<Topic>(new { id = 1 }).AsTable(a => "TopicAsTable").ToSql();
125+
Assert.Equal("DELETE FROM TopicAsTable WHERE (Id = 1)", sql);
126+
}
127+
}
128+
}

0 commit comments

Comments
 (0)