mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 10:42:52 +08:00
- 修复 ClickHouse 单条记录插入\t \n失败的 bug;
This commit is contained in:
parent
b7c6db4f7a
commit
ec6d1ffb37
@ -10,7 +10,7 @@ using XY.Model.Business;
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using FreeSql.DataAnnotations;
|
using FreeSql.DataAnnotations;
|
||||||
|
|
||||||
namespace FreeSql.Tests.MySql
|
namespace FreeSql.Tests.ClickHouse
|
||||||
{
|
{
|
||||||
public class ClickHouseTest1
|
public class ClickHouseTest1
|
||||||
{
|
{
|
||||||
@ -309,11 +309,38 @@ namespace FreeSql.Tests.MySql
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void TestInsertNoneParameter()
|
public void TestInsertNoneParameter()
|
||||||
{
|
{
|
||||||
var json = "[{\"date\":\"2021-12-19T02:47:53.4365075 08:00\",\"temperatureC\":6,\"temperatureF\":42,\"summary\":\"Balmy\"},{\"date\":\"2021-12-20T02:47:53.4366893 08:00\",\"temperatureC\":36,\"temperatureF\":96,\"summary\":\"Bracing\"},{\"date\":\"2021-12-21T02:47:53.4366903 08:00\",\"temperatureC\":-15,\"temperatureF\":6,\"summary\":\"Bracing\"},{\"date\":\"2021-12-22T02:47:53.4366904 08:00\",\"temperatureC\":14,\"temperatureF\":57,\"summary\":\"Cool\"},{\"date\":\"2021-12-23T02:47:53.4366905 08:00\",\"temperatureC\":29,\"temperatureF\":84,\"summary\":\"Mild\"}]";
|
var json = "[{\"date\":\t\"2021-12-19T02:47:53.4365075 08:00\",\"temperatureC\":6,\"temperatureF\":42,\"summary\":\"Balmy\"},{\"date\":\"2021-12-20T02:47:53.4366893 08:00\",\"temperatureC\":36,\"temperatureF\":96,\"summary\":\"Bracing\"},{\"date\":\"2021-12-21T02:47:53.4366903 08:00\",\"temperatureC\":-15,\"temperatureF\":6,\"summary\":\"Bracing\"},{\"date\":\"2021-12-22T02:47:53.4366904 08:00\",\"temperatureC\":14,\"temperatureF\":57,\"summary\":\"Cool\"},{\"date\":\"2021-12-23T02:47:53.4366905 08:00\",\"temperatureC\":29,\"temperatureF\":84,\"summary\":\"Mild\"}]";
|
||||||
var data = new Entity { Id = Guid.NewGuid().ToString(), Content = json };
|
var data = new Entity { Id = Guid.NewGuid().ToString(), Content = json };
|
||||||
|
|
||||||
var fsql = g.clickHouse;
|
var fsql = g.clickHouse;
|
||||||
fsql.Insert(data).NoneParameter().ExecuteAffrows();
|
fsql.Insert(data).NoneParameter().ExecuteAffrows();
|
||||||
|
var item = fsql.Select<Entity>().Where(a => a.Id == data.Id).First();
|
||||||
|
Assert.Equal(item.Content, json);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void TestInsertUseParameter()
|
||||||
|
{
|
||||||
|
var fsql = g.clickHouse;
|
||||||
|
fsql.CodeFirst.SyncStructure<Entity>();
|
||||||
|
var json = "[{\"date\":\t\"2021-12-19T02:47:53.4365075 08:00\",\"temperatureC\":6,\"temperatureF\":42,\"summary\":\"Balmy\"},{\"date\":\"2021-12-20T02:47:53.4366893 08:00\",\"temperatureC\":36,\"temperatureF\":96,\"summary\":\"Bracing\"},{\"date\":\"2021-12-21T02:47:53.4366903 08:00\",\"temperatureC\":-15,\"temperatureF\":6,\"summary\":\"Bracing\"},{\"date\":\"2021-12-22T02:47:53.4366904 08:00\",\"temperatureC\":14,\"temperatureF\":57,\"summary\":\"Cool\"},{\"date\":\"2021-12-23T02:47:53.4366905 08:00\",\"temperatureC\":29,\"temperatureF\":84,\"summary\":\"Mild\"}]";
|
||||||
|
var data = new Entity { Id = Guid.NewGuid().ToString(), Content = json };
|
||||||
|
|
||||||
|
var sql1 = fsql.Insert(data).ToSql();
|
||||||
|
fsql.Insert(data).ExecuteAffrows();
|
||||||
|
var item = fsql.Select<Entity>().Where(a => a.Id == data.Id).First();
|
||||||
|
Assert.Equal(item.Content, json);
|
||||||
|
|
||||||
|
var data2 = new[]{
|
||||||
|
new Entity { Id = Guid.NewGuid().ToString(), Content = json },
|
||||||
|
new Entity { Id = Guid.NewGuid().ToString(), Content = json }
|
||||||
|
};
|
||||||
|
var sql2 = fsql.Insert(data2).ToSql();
|
||||||
|
fsql.Insert(data2).ExecuteAffrows();
|
||||||
|
item = fsql.Select<Entity>().Where(a => a.Id == data2[0].Id).First();
|
||||||
|
Assert.Equal(item.Content, json);
|
||||||
|
item = fsql.Select<Entity>().Where(a => a.Id == data2[1].Id).First();
|
||||||
|
Assert.Equal(item.Content, json);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -4,11 +4,6 @@
|
|||||||
<name>FreeSql.Tests</name>
|
<name>FreeSql.Tests</name>
|
||||||
</assembly>
|
</assembly>
|
||||||
<members>
|
<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">
|
<member name="P:FreeSql.Tests.Firebird.FirebirdCodeFirstTest.AddUniquesInfo.id">
|
||||||
<summary>
|
<summary>
|
||||||
编号
|
编号
|
||||||
@ -432,6 +427,11 @@
|
|||||||
修改人
|
修改人
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</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">
|
<member name="T:FreeSql.Tests.SqlServer.SqlServerCodeFirstTest.tbdot01">
|
||||||
<summary>
|
<summary>
|
||||||
表中带点
|
表中带点
|
||||||
|
@ -9,8 +9,6 @@ public class g
|
|||||||
{
|
{
|
||||||
static Lazy<IFreeSql> clickHouseLazy = new Lazy<IFreeSql>(() => new FreeSql.FreeSqlBuilder()
|
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")
|
.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)
|
//.UseAutoSyncStructure(true)
|
||||||
//.UseGenerateCommandParameterWithLambda(true)
|
//.UseGenerateCommandParameterWithLambda(true)
|
||||||
.UseMonitorCommand(
|
.UseMonitorCommand(
|
||||||
|
@ -19,6 +19,11 @@ namespace FreeSql.ClickHouse
|
|||||||
|
|
||||||
public override DbParameter AppendParamter(List<DbParameter> _params, string parameterName, ColumnInfo col, Type type, object value)
|
public override DbParameter AppendParamter(List<DbParameter> _params, string parameterName, ColumnInfo col, Type type, object value)
|
||||||
{
|
{
|
||||||
|
if (value is string str)
|
||||||
|
value = str?.Replace("\t", "\\t")
|
||||||
|
.Replace("\r\n", "\\r\\n")
|
||||||
|
.Replace("\n", "\\n")
|
||||||
|
.Replace("\r", "\\r");
|
||||||
if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
|
if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
|
||||||
var dbtype = (DbType?)_orm.CodeFirst.GetDbInfo(type)?.type;
|
var dbtype = (DbType?)_orm.CodeFirst.GetDbInfo(type)?.type;
|
||||||
DbParameter ret = new ClickHouseDbParameter { ParameterName = parameterName };//QuoteParamterName(parameterName)
|
DbParameter ret = new ClickHouseDbParameter { ParameterName = parameterName };//QuoteParamterName(parameterName)
|
||||||
@ -38,10 +43,8 @@ namespace FreeSql.ClickHouse
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (value is bool)
|
if (value is bool)
|
||||||
{
|
|
||||||
ret.Value = (bool)value ? 1 : 0;
|
ret.Value = (bool)value ? 1 : 0;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
_params?.Add(ret);
|
_params?.Add(ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -49,6 +52,11 @@ namespace FreeSql.ClickHouse
|
|||||||
public override DbParameter[] GetDbParamtersByObject(string sql, object obj) =>
|
public override DbParameter[] GetDbParamtersByObject(string sql, object obj) =>
|
||||||
Utils.GetDbParamtersByObject<DbParameter>(sql, obj, "?", (name, type, value) =>
|
Utils.GetDbParamtersByObject<DbParameter>(sql, obj, "?", (name, type, value) =>
|
||||||
{
|
{
|
||||||
|
if (value is string str)
|
||||||
|
value = str?.Replace("\t", "\\t")
|
||||||
|
.Replace("\r\n", "\\r\\n")
|
||||||
|
.Replace("\n", "\\n")
|
||||||
|
.Replace("\r", "\\r");
|
||||||
DbParameter ret = new ClickHouseDbParameter { ParameterName = $"?{name}", Value = value };
|
DbParameter ret = new ClickHouseDbParameter { ParameterName = $"?{name}", Value = value };
|
||||||
var tp = _orm.CodeFirst.GetDbInfo(type)?.type;
|
var tp = _orm.CodeFirst.GetDbInfo(type)?.type;
|
||||||
if (tp != null)
|
if (tp != null)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user