mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 04:18:16 +08:00
添加ClickHouse数据库支持
This commit is contained in:
95
FreeSql.Tests/FreeSql.Tests/ClickHouse/ClickHouseTest1.cs
Normal file
95
FreeSql.Tests/FreeSql.Tests/ClickHouse/ClickHouseTest1.cs
Normal file
@ -0,0 +1,95 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using Xunit;
|
||||
|
||||
namespace FreeSql.Tests.MySql
|
||||
{
|
||||
public class ClickHouseTest1
|
||||
{
|
||||
|
||||
class TestAuditValue
|
||||
{
|
||||
public Guid id { get; set; }
|
||||
[Now]
|
||||
public DateTime createtime { get; set; }
|
||||
}
|
||||
[FreeSql.DataAnnotations.Table(Name = "ClickHouseTest")]
|
||||
public class TestClickHouse
|
||||
{
|
||||
public long Id { get; set; }
|
||||
|
||||
public string Name { get; set; }
|
||||
}
|
||||
class NowAttribute: Attribute { }
|
||||
|
||||
[Fact]
|
||||
public void AuditValue()
|
||||
{
|
||||
var date = DateTime.Now.Date;
|
||||
var item = new TestAuditValue();
|
||||
|
||||
EventHandler<Aop.AuditValueEventArgs> audit = (s, e) =>
|
||||
{
|
||||
if (e.Property.GetCustomAttribute<NowAttribute>(false) != null)
|
||||
e.Value = DateTime.Now.Date;
|
||||
};
|
||||
g.mysql.Aop.AuditValue += audit;
|
||||
|
||||
g.mysql.Insert(item).ExecuteAffrows();
|
||||
|
||||
g.mysql.Aop.AuditValue -= audit;
|
||||
|
||||
Assert.Equal(item.createtime, date);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestInsert()
|
||||
{
|
||||
var fsql = g.clickHouse;
|
||||
List<TestClickHouse> list=new List<TestClickHouse>();
|
||||
for (int i = 0; i < 1000; i++)
|
||||
{
|
||||
list.Add(new TestClickHouse()
|
||||
{
|
||||
Id = i,
|
||||
Name = $"测试{i}"
|
||||
});
|
||||
}
|
||||
fsql.Insert(list).ExecuteAffrows();
|
||||
var items = fsql.Select<TestClickHouse>().Where(o=>o.Id>900).OrderByDescending(o=>o.Id).ToList();
|
||||
Assert.Equal(100, items.Count);
|
||||
}
|
||||
[Fact]
|
||||
public void TestPage()
|
||||
{
|
||||
var fsql = g.clickHouse;
|
||||
|
||||
var list=fsql.Select<TestClickHouse>()
|
||||
.Page(1,100)
|
||||
.Where(o=>o.Id>200&&o.Id<500)
|
||||
.Count(out var count).ToList();
|
||||
Assert.Equal(100, list.Count);
|
||||
}
|
||||
[Fact]
|
||||
public void TestDelete()
|
||||
{
|
||||
var fsql = g.clickHouse;
|
||||
var count1=fsql.Select<TestClickHouse>().Count();
|
||||
fsql.Delete<TestClickHouse>().Where(o => o.Id < 500).ExecuteAffrows();
|
||||
var count2 = fsql.Select<TestClickHouse>().Count();
|
||||
Assert.NotEqual(count1, count2);
|
||||
}
|
||||
[Fact]
|
||||
public void TestUpdate()
|
||||
{
|
||||
var fsql = g.clickHouse;
|
||||
fsql.Update<TestClickHouse>().Where(o => o.Id > 900)
|
||||
.Set(o=>o.Name,"修改后的值")
|
||||
.ExecuteAffrows();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -37,6 +37,7 @@
|
||||
<ProjectReference Include="..\..\Extensions\FreeSql.Extensions.Linq\FreeSql.Extensions.Linq.csproj" />
|
||||
<ProjectReference Include="..\..\FreeSql.DbContext\FreeSql.DbContext.csproj" />
|
||||
<ProjectReference Include="..\..\FreeSql\FreeSql.csproj" />
|
||||
<ProjectReference Include="..\..\Providers\FreeSql.Provider.ClickHouse\FreeSql.Provider.ClickHouse.csproj" />
|
||||
<ProjectReference Include="..\..\Providers\FreeSql.Provider.Dameng\FreeSql.Provider.Dameng.csproj" />
|
||||
<ProjectReference Include="..\..\Providers\FreeSql.Provider.Firebird\FreeSql.Provider.Firebird.csproj" />
|
||||
<ProjectReference Include="..\..\Providers\FreeSql.Provider.KingbaseES\FreeSql.Provider.KingbaseES.csproj" />
|
||||
|
@ -4,6 +4,11 @@
|
||||
<name>FreeSql.Tests</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="M:FreeSql.Tests.MySql.MySqlCodeFirstTest.Tb_alltype.Save">
|
||||
<summary>
|
||||
保存或添加,如果主键有值则尝试 Update,如果影响的行为 0 则尝试 Insert
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:FreeSql.Tests.Firebird.FirebirdCodeFirstTest.AddUniquesInfo.id">
|
||||
<summary>
|
||||
编号
|
||||
@ -287,11 +292,6 @@
|
||||
修改人
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:FreeSql.Tests.MySql.MySqlCodeFirstTest.Tb_alltype.Save">
|
||||
<summary>
|
||||
保存或添加,如果主键有值则尝试 Update,如果影响的行为 0 则尝试 Insert
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:FreeSql.Tests.SqlServer.SqlServerCodeFirstTest.tbdot01">
|
||||
<summary>
|
||||
表中带点
|
||||
|
@ -34,6 +34,29 @@ namespace FreeSql.Tests
|
||||
var items = fsql.Select<TestJsonb01Cls1>().ToList();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestClickHouse()
|
||||
{
|
||||
var fsql = g.mysql;
|
||||
fsql.Delete<TestJsonb01Cls1>().Where("1=1").ExecuteAffrows();
|
||||
|
||||
var item = new TestJsonb01Cls1
|
||||
{
|
||||
jsonb01 = new List<int> { 1, 5, 10, 20 },
|
||||
jsonb02 = new List<long> { 11, 51, 101, 201 },
|
||||
jsonb03 = new List<string> { "12", "52", "102", "202" },
|
||||
};
|
||||
fsql.Insert(item).ExecuteAffrows();
|
||||
|
||||
}
|
||||
[FreeSql.DataAnnotations.Table(Name = "ClickHouseTest")]
|
||||
public class ClickHouse
|
||||
{
|
||||
public long Id { get; set; }
|
||||
|
||||
public string Name { get; set; }
|
||||
}
|
||||
|
||||
public class TestJsonb01Cls1
|
||||
{
|
||||
public Guid id { get; set; }
|
||||
|
@ -7,6 +7,19 @@ using System.Threading;
|
||||
|
||||
public class g
|
||||
{
|
||||
static Lazy<IFreeSql> clickHouseLazy = new Lazy<IFreeSql>(() => new FreeSql.FreeSqlBuilder()
|
||||
.UseConnectionString(FreeSql.DataType.ClickHouse, "Compress=False;BufferSize=32768;SocketTimeout=10000;CheckCompressedHash=False;Encrypt=False;Compressor=lz4;Host=192.168.0.121;Port=8125;Database=PersonnelLocation;Username=root;Password=+riQ8V9D")
|
||||
//.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;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)
|
||||
//.UseGenerateCommandParameterWithLambda(true)
|
||||
.UseMonitorCommand(
|
||||
cmd => Trace.WriteLine("\r\n线程" + Thread.CurrentThread.ManagedThreadId + ": " + cmd.CommandText) //监听SQL命令对象,在执行前
|
||||
//, (cmd, traceLog) => Console.WriteLine(traceLog)
|
||||
)
|
||||
.UseLazyLoading(true)
|
||||
.Build());
|
||||
public static IFreeSql clickHouse => clickHouseLazy.Value;
|
||||
|
||||
static Lazy<IFreeSql> mysqlLazy = new Lazy<IFreeSql>(() => new FreeSql.FreeSqlBuilder()
|
||||
.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=5;Allow User Variables=True")
|
||||
|
Reference in New Issue
Block a user