mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 02:32:50 +08:00
- 增加 fsql.Insert(Dictionary<string, object>) 无实体类插入方法;#481
This commit is contained in:
parent
56ce675b65
commit
dc688adc11
@ -141,6 +141,22 @@ namespace base_entity
|
|||||||
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
|
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
Dictionary<string, object> dic = new Dictionary<string, object>();
|
||||||
|
dic.Add("id", 1);
|
||||||
|
dic.Add("name", "xxxx");
|
||||||
|
var diclist = new List<Dictionary<string, object>>();
|
||||||
|
diclist.Add(dic);
|
||||||
|
diclist.Add(new Dictionary<string, object>
|
||||||
|
{
|
||||||
|
["id"] = 2,
|
||||||
|
["name"] = "yyyy"
|
||||||
|
});
|
||||||
|
|
||||||
|
var sqss = fsql.Insert(dic).AsTable("table1").ToSql();
|
||||||
|
var sqss2 = fsql.Insert(diclist).AsTable("table1").ToSql();
|
||||||
|
sqss = fsql.Insert(dic).AsTable("table1").NoneParameter(false).ToSql();
|
||||||
|
sqss2 = fsql.Insert(diclist).AsTable("table1").NoneParameter(false).ToSql();
|
||||||
|
|
||||||
for (var a = 0; a < 10000; a++)
|
for (var a = 0; a < 10000; a++)
|
||||||
fsql.Select<User1>().First();
|
fsql.Select<User1>().First();
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<Version>3.2.100</Version>
|
<Version>3.2.100</Version>
|
||||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||||
<Authors>FreeSql;ncc;YeXiangQin</Authors>
|
<Authors>FreeSql;ncc;YeXiangQin</Authors>
|
||||||
<Description>FreeSql is the ORM in .NetCore, .NetFramework, And Xamarin. It supports Mysql, Postgresql, SqlServer, Oracle, Sqlite, Firebird, Odbc, 达梦, 人大金仓, 神舟通用, 翰高, And Access</Description>
|
<Description>FreeSql is the ORM in .NetCore, .NetFramework, And Xamarin. It supports Mysql, Postgresql, SqlServer, Oracle, Sqlite, Firebird, Odbc, 达梦, 人大金仓, 神舟通用, 南大通用, 翰高, And Access</Description>
|
||||||
<PackageProjectUrl>https://github.com/2881099/FreeSql/wiki/DbContext</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/2881099/FreeSql/wiki/DbContext</PackageProjectUrl>
|
||||||
<PackageTags>FreeSql ORM DbContext</PackageTags>
|
<PackageTags>FreeSql ORM DbContext</PackageTags>
|
||||||
<RepositoryType>git</RepositoryType>
|
<RepositoryType>git</RepositoryType>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<TargetFrameworks>netstandard2.0;net60;net50;netcoreapp31;netcoreapp21;net45;net40</TargetFrameworks>
|
<TargetFrameworks>netstandard2.0;net60;net50;netcoreapp31;netcoreapp21;net45;net40</TargetFrameworks>
|
||||||
<Version>3.2.100</Version>
|
<Version>3.2.100</Version>
|
||||||
<Authors>FreeSql;ncc;YeXiangQin</Authors>
|
<Authors>FreeSql;ncc;YeXiangQin</Authors>
|
||||||
<Description>FreeSql Implementation of General Repository, Support MySql/SqlServer/PostgreSQL/Oracle/Sqlite/Firebird/达梦/人大金仓/神舟通用/翰高/Access, and read/write separation、and split table.</Description>
|
<Description>FreeSql Implementation of General Repository, Support MySql/SqlServer/PostgreSQL/Oracle/Sqlite/Firebird/达梦/人大金仓/神舟通用/南大通用/翰高/Access, and read/write separation、and split table.</Description>
|
||||||
<PackageProjectUrl>https://github.com/2881099/FreeSql/wiki/Repository</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/2881099/FreeSql/wiki/Repository</PackageProjectUrl>
|
||||||
<PackageTags>FreeSql ORM Repository</PackageTags>
|
<PackageTags>FreeSql ORM Repository</PackageTags>
|
||||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||||
|
@ -29,6 +29,31 @@ namespace FreeSql.Tests.MySqlConnector
|
|||||||
}
|
}
|
||||||
enum TestEnumInserTbType { str1, biggit, sum211 }
|
enum TestEnumInserTbType { str1, biggit, sum211 }
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void InsertDictionary()
|
||||||
|
{
|
||||||
|
var fsql = g.mysql;
|
||||||
|
Dictionary<string, object> dic = new Dictionary<string, object>();
|
||||||
|
dic.Add("id", 1);
|
||||||
|
dic.Add("name", "xxxx");
|
||||||
|
var diclist = new List<Dictionary<string, object>>();
|
||||||
|
diclist.Add(dic);
|
||||||
|
diclist.Add(new Dictionary<string, object>
|
||||||
|
{
|
||||||
|
["id"] = 2,
|
||||||
|
["name"] = "yyyy"
|
||||||
|
});
|
||||||
|
|
||||||
|
var sql1 = fsql.Insert(dic).AsTable("table1").ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO `table1`(`id`, `name`) VALUES(@id_0, @name_0)", sql1);
|
||||||
|
var sql2 = fsql.Insert(diclist).AsTable("table1").ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO `table1`(`id`, `name`) VALUES(@id_0, @name_0), (@id_1, @name_1)", sql2);
|
||||||
|
var sql3 = fsql.Insert(dic).AsTable("table1").NoneParameter().ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO `table1`(`id`, `name`) VALUES(1, 'xxxx')", sql3);
|
||||||
|
var sql4 = fsql.Insert(diclist).AsTable("table1").NoneParameter().ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO `table1`(`id`, `name`) VALUES(1, 'xxxx'), (2, 'yyyy')", sql4);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void AppendData()
|
public void AppendData()
|
||||||
{
|
{
|
||||||
|
@ -22,6 +22,37 @@ namespace FreeSql.Tests.Dameng
|
|||||||
public DateTime CreateTime { get; set; }
|
public DateTime CreateTime { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void InsertDictionary()
|
||||||
|
{
|
||||||
|
var fsql = g.dameng;
|
||||||
|
Dictionary<string, object> dic = new Dictionary<string, object>();
|
||||||
|
dic.Add("id", 1);
|
||||||
|
dic.Add("name", "xxxx");
|
||||||
|
var diclist = new List<Dictionary<string, object>>();
|
||||||
|
diclist.Add(dic);
|
||||||
|
diclist.Add(new Dictionary<string, object>
|
||||||
|
{
|
||||||
|
["id"] = 2,
|
||||||
|
["name"] = "yyyy"
|
||||||
|
});
|
||||||
|
|
||||||
|
var sql1 = fsql.Insert(dic).AsTable("table1").ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO ""TABLE1""(""ID"", ""NAME"") VALUES(:id_0, :name_0)", sql1);
|
||||||
|
var sql2 = fsql.Insert(diclist).AsTable("table1").ToSql();
|
||||||
|
Assert.Equal(@"INSERT ALL
|
||||||
|
INTO ""TABLE1""(""ID"", ""NAME"") VALUES(:id_0, :name_0)
|
||||||
|
INTO ""TABLE1""(""ID"", ""NAME"") VALUES(:id_1, :name_1)
|
||||||
|
SELECT 1 FROM DUAL", sql2);
|
||||||
|
var sql3 = fsql.Insert(dic).AsTable("table1").NoneParameter().ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO ""TABLE1""(""ID"", ""NAME"") VALUES(1, 'xxxx')", sql3);
|
||||||
|
var sql4 = fsql.Insert(diclist).AsTable("table1").NoneParameter().ToSql();
|
||||||
|
Assert.Equal(@"INSERT ALL
|
||||||
|
INTO ""TABLE1""(""ID"", ""NAME"") VALUES(1, 'xxxx')
|
||||||
|
INTO ""TABLE1""(""ID"", ""NAME"") VALUES(2, 'yyyy')
|
||||||
|
SELECT 1 FROM DUAL", sql4);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void AppendData()
|
public void AppendData()
|
||||||
{
|
{
|
||||||
|
@ -22,6 +22,35 @@ namespace FreeSql.Tests.Firebird
|
|||||||
public DateTime CreateTime { get; set; }
|
public DateTime CreateTime { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void InsertDictionary()
|
||||||
|
{
|
||||||
|
var fsql = g.firebird;
|
||||||
|
Dictionary<string, object> dic = new Dictionary<string, object>();
|
||||||
|
dic.Add("id", 1);
|
||||||
|
dic.Add("name", "xxxx");
|
||||||
|
var diclist = new List<Dictionary<string, object>>();
|
||||||
|
diclist.Add(dic);
|
||||||
|
diclist.Add(new Dictionary<string, object>
|
||||||
|
{
|
||||||
|
["id"] = 2,
|
||||||
|
["name"] = "yyyy"
|
||||||
|
});
|
||||||
|
|
||||||
|
var sql1 = fsql.Insert(dic).AsTable("table1").ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO ""TABLE1""(""ID"", ""NAME"") VALUES(@id_0, @name_0)", sql1);
|
||||||
|
var sql2 = fsql.Insert(diclist).AsTable("table1").ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO ""TABLE1""(""ID"", ""NAME"") SELECT FIRST 1 @id_0, @name_0 FROM rdb$database
|
||||||
|
UNION ALL
|
||||||
|
SELECT FIRST 1 @id_1, @name_1 FROM rdb$database", sql2);
|
||||||
|
var sql3 = fsql.Insert(dic).AsTable("table1").NoneParameter().ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO ""TABLE1""(""ID"", ""NAME"") VALUES(1, 'xxxx')", sql3);
|
||||||
|
var sql4 = fsql.Insert(diclist).AsTable("table1").NoneParameter().ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO ""TABLE1""(""ID"", ""NAME"") SELECT FIRST 1 1, 'xxxx' FROM rdb$database
|
||||||
|
UNION ALL
|
||||||
|
SELECT FIRST 1 2, 'yyyy' FROM rdb$database", sql4);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void AppendData()
|
public void AppendData()
|
||||||
{
|
{
|
||||||
|
@ -22,6 +22,27 @@ namespace FreeSql.Tests.MsAccess
|
|||||||
public DateTime CreateTime { get; set; }
|
public DateTime CreateTime { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void InsertDictionary()
|
||||||
|
{
|
||||||
|
var fsql = g.msaccess;
|
||||||
|
Dictionary<string, object> dic = new Dictionary<string, object>();
|
||||||
|
dic.Add("id", 1);
|
||||||
|
dic.Add("name", "xxxx");
|
||||||
|
var diclist = new List<Dictionary<string, object>>();
|
||||||
|
diclist.Add(dic);
|
||||||
|
diclist.Add(new Dictionary<string, object>
|
||||||
|
{
|
||||||
|
["id"] = 2,
|
||||||
|
["name"] = "yyyy"
|
||||||
|
});
|
||||||
|
|
||||||
|
var sql1 = fsql.Insert(dic).AsTable("table1").ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO [table1]([id], [name]) VALUES(1, 'xxxx')", sql1);
|
||||||
|
var sql2 = fsql.Insert(diclist).AsTable("table1").ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO [table1]([id], [name]) VALUES(1, 'xxxx'), (2, 'yyyy')", sql2);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void AppendData()
|
public void AppendData()
|
||||||
{
|
{
|
||||||
|
@ -30,6 +30,31 @@ namespace FreeSql.Tests.MySql
|
|||||||
}
|
}
|
||||||
enum TestEnumInserTbType { str1, biggit, sum211 }
|
enum TestEnumInserTbType { str1, biggit, sum211 }
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void InsertDictionary()
|
||||||
|
{
|
||||||
|
var fsql = g.mysql;
|
||||||
|
Dictionary<string, object> dic = new Dictionary<string, object>();
|
||||||
|
dic.Add("id", 1);
|
||||||
|
dic.Add("name", "xxxx");
|
||||||
|
var diclist = new List<Dictionary<string, object>>();
|
||||||
|
diclist.Add(dic);
|
||||||
|
diclist.Add(new Dictionary<string, object>
|
||||||
|
{
|
||||||
|
["id"] = 2,
|
||||||
|
["name"] = "yyyy"
|
||||||
|
});
|
||||||
|
|
||||||
|
var sql1 = fsql.Insert(dic).AsTable("table1").ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO `table1`(`id`, `name`) VALUES(?id_0, ?name_0)", sql1);
|
||||||
|
var sql2 = fsql.Insert(diclist).AsTable("table1").ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO `table1`(`id`, `name`) VALUES(?id_0, ?name_0), (?id_1, ?name_1)", sql2);
|
||||||
|
var sql3 = fsql.Insert(dic).AsTable("table1").NoneParameter().ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO `table1`(`id`, `name`) VALUES(1, 'xxxx')", sql3);
|
||||||
|
var sql4 = fsql.Insert(diclist).AsTable("table1").NoneParameter().ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO `table1`(`id`, `name`) VALUES(1, 'xxxx'), (2, 'yyyy')", sql4);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void AppendData()
|
public void AppendData()
|
||||||
{
|
{
|
||||||
|
@ -22,6 +22,37 @@ namespace FreeSql.Tests.Oracle
|
|||||||
public DateTime CreateTime { get; set; }
|
public DateTime CreateTime { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void InsertDictionary()
|
||||||
|
{
|
||||||
|
var fsql = g.oracle;
|
||||||
|
Dictionary<string, object> dic = new Dictionary<string, object>();
|
||||||
|
dic.Add("id", 1);
|
||||||
|
dic.Add("name", "xxxx");
|
||||||
|
var diclist = new List<Dictionary<string, object>>();
|
||||||
|
diclist.Add(dic);
|
||||||
|
diclist.Add(new Dictionary<string, object>
|
||||||
|
{
|
||||||
|
["id"] = 2,
|
||||||
|
["name"] = "yyyy"
|
||||||
|
});
|
||||||
|
|
||||||
|
var sql1 = fsql.Insert(dic).AsTable("table1").ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO ""TABLE1""(""ID"", ""NAME"") VALUES(:id_0, :name_0)", sql1);
|
||||||
|
var sql2 = fsql.Insert(diclist).AsTable("table1").ToSql();
|
||||||
|
Assert.Equal(@"INSERT ALL
|
||||||
|
INTO ""TABLE1""(""ID"", ""NAME"") VALUES(:id_0, :name_0)
|
||||||
|
INTO ""TABLE1""(""ID"", ""NAME"") VALUES(:id_1, :name_1)
|
||||||
|
SELECT 1 FROM DUAL", sql2);
|
||||||
|
var sql3 = fsql.Insert(dic).AsTable("table1").NoneParameter().ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO ""TABLE1""(""ID"", ""NAME"") VALUES(1, 'xxxx')", sql3);
|
||||||
|
var sql4 = fsql.Insert(diclist).AsTable("table1").NoneParameter().ToSql();
|
||||||
|
Assert.Equal(@"INSERT ALL
|
||||||
|
INTO ""TABLE1""(""ID"", ""NAME"") VALUES(1, 'xxxx')
|
||||||
|
INTO ""TABLE1""(""ID"", ""NAME"") VALUES(2, 'yyyy')
|
||||||
|
SELECT 1 FROM DUAL", sql4);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void AppendData()
|
public void AppendData()
|
||||||
{
|
{
|
||||||
|
@ -22,6 +22,31 @@ namespace FreeSql.Tests.PostgreSQL
|
|||||||
public DateTime CreateTime { get; set; }
|
public DateTime CreateTime { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void InsertDictionary()
|
||||||
|
{
|
||||||
|
var fsql = g.pgsql;
|
||||||
|
Dictionary<string, object> dic = new Dictionary<string, object>();
|
||||||
|
dic.Add("id", 1);
|
||||||
|
dic.Add("name", "xxxx");
|
||||||
|
var diclist = new List<Dictionary<string, object>>();
|
||||||
|
diclist.Add(dic);
|
||||||
|
diclist.Add(new Dictionary<string, object>
|
||||||
|
{
|
||||||
|
["id"] = 2,
|
||||||
|
["name"] = "yyyy"
|
||||||
|
});
|
||||||
|
|
||||||
|
var sql1 = fsql.Insert(dic).AsTable("table1").ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO ""table1""(""id"", ""name"") VALUES(@id_0, @name_0)", sql1);
|
||||||
|
var sql2 = fsql.Insert(diclist).AsTable("table1").ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO ""table1""(""id"", ""name"") VALUES(@id_0, @name_0), (@id_1, @name_1)", sql2);
|
||||||
|
var sql3 = fsql.Insert(dic).AsTable("table1").NoneParameter().ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO ""table1""(""id"", ""name"") VALUES(1, 'xxxx')", sql3);
|
||||||
|
var sql4 = fsql.Insert(diclist).AsTable("table1").NoneParameter().ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO ""table1""(""id"", ""name"") VALUES(1, 'xxxx'), (2, 'yyyy')", sql4);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void AppendData()
|
public void AppendData()
|
||||||
{
|
{
|
||||||
|
@ -22,6 +22,31 @@ namespace FreeSql.Tests.ShenTong
|
|||||||
public DateTime CreateTime { get; set; }
|
public DateTime CreateTime { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void InsertDictionary()
|
||||||
|
{
|
||||||
|
var fsql = g.shentong;
|
||||||
|
Dictionary<string, object> dic = new Dictionary<string, object>();
|
||||||
|
dic.Add("id", 1);
|
||||||
|
dic.Add("name", "xxxx");
|
||||||
|
var diclist = new List<Dictionary<string, object>>();
|
||||||
|
diclist.Add(dic);
|
||||||
|
diclist.Add(new Dictionary<string, object>
|
||||||
|
{
|
||||||
|
["id"] = 2,
|
||||||
|
["name"] = "yyyy"
|
||||||
|
});
|
||||||
|
|
||||||
|
var sql1 = fsql.Insert(dic).AsTable("table1").ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO ""TABLE1""(""ID"", ""NAME"") VALUES(@id_0, @name_0)", sql1);
|
||||||
|
var sql2 = fsql.Insert(diclist).AsTable("table1").ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO ""TABLE1""(""ID"", ""NAME"") VALUES(@id_0, @name_0), (@id_1, @name_1)", sql2);
|
||||||
|
var sql3 = fsql.Insert(dic).AsTable("table1").NoneParameter().ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO ""TABLE1""(""ID"", ""NAME"") VALUES(1, 'xxxx')", sql3);
|
||||||
|
var sql4 = fsql.Insert(diclist).AsTable("table1").NoneParameter().ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO ""TABLE1""(""ID"", ""NAME"") VALUES(1, 'xxxx'), (2, 'yyyy')", sql4);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void AppendData()
|
public void AppendData()
|
||||||
{
|
{
|
||||||
|
@ -32,6 +32,31 @@ namespace FreeSql.Tests.SqlServer
|
|||||||
public DateTime CreateTime { get; set; }
|
public DateTime CreateTime { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void InsertDictionary()
|
||||||
|
{
|
||||||
|
var fsql = g.sqlserver;
|
||||||
|
Dictionary<string, object> dic = new Dictionary<string, object>();
|
||||||
|
dic.Add("id", 1);
|
||||||
|
dic.Add("name", "xxxx");
|
||||||
|
var diclist = new List<Dictionary<string, object>>();
|
||||||
|
diclist.Add(dic);
|
||||||
|
diclist.Add(new Dictionary<string, object>
|
||||||
|
{
|
||||||
|
["id"] = 2,
|
||||||
|
["name"] = "yyyy"
|
||||||
|
});
|
||||||
|
|
||||||
|
var sql1 = fsql.Insert(dic).AsTable("table1").ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO [table1]([id], [name]) VALUES(@id_0, @name_0)", sql1);
|
||||||
|
var sql2 = fsql.Insert(diclist).AsTable("table1").ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO [table1]([id], [name]) VALUES(@id_0, @name_0), (@id_1, @name_1)", sql2);
|
||||||
|
var sql3 = fsql.Insert(dic).AsTable("table1").NoneParameter().ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO [table1]([id], [name]) VALUES(1, N'xxxx')", sql3);
|
||||||
|
var sql4 = fsql.Insert(diclist).AsTable("table1").NoneParameter().ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO [table1]([id], [name]) VALUES(1, N'xxxx'), (2, N'yyyy')", sql4);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void AppendData()
|
public void AppendData()
|
||||||
{
|
{
|
||||||
|
@ -22,6 +22,31 @@ namespace FreeSql.Tests.Sqlite
|
|||||||
public DateTime CreateTime { get; set; }
|
public DateTime CreateTime { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void InsertDictionary()
|
||||||
|
{
|
||||||
|
var fsql = g.sqlite;
|
||||||
|
Dictionary<string, object> dic = new Dictionary<string, object>();
|
||||||
|
dic.Add("id", 1);
|
||||||
|
dic.Add("name", "xxxx");
|
||||||
|
var diclist = new List<Dictionary<string, object>>();
|
||||||
|
diclist.Add(dic);
|
||||||
|
diclist.Add(new Dictionary<string, object>
|
||||||
|
{
|
||||||
|
["id"] = 2,
|
||||||
|
["name"] = "yyyy"
|
||||||
|
});
|
||||||
|
|
||||||
|
var sql1 = fsql.Insert(dic).AsTable("table1").ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO ""table1""(""id"", ""name"") VALUES(@id_0, @name_0)", sql1);
|
||||||
|
var sql2 = fsql.Insert(diclist).AsTable("table1").ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO ""table1""(""id"", ""name"") VALUES(@id_0, @name_0), (@id_1, @name_1)", sql2);
|
||||||
|
var sql3 = fsql.Insert(dic).AsTable("table1").NoneParameter().ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO ""table1""(""id"", ""name"") VALUES(1, 'xxxx')", sql3);
|
||||||
|
var sql4 = fsql.Insert(diclist).AsTable("table1").NoneParameter().ToSql();
|
||||||
|
Assert.Equal(@"INSERT INTO ""table1""(""id"", ""name"") VALUES(1, 'xxxx'), (2, 'yyyy')", sql4);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void AppendData()
|
public void AppendData()
|
||||||
{
|
{
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<Version>3.2.100</Version>
|
<Version>3.2.100</Version>
|
||||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||||
<Authors>FreeSql;ncc;YeXiangQin</Authors>
|
<Authors>FreeSql;ncc;YeXiangQin</Authors>
|
||||||
<Description>FreeSql is the ORM in .NetCore, .NetFramework, And Xamarin. It supports Mysql, Postgresql, SqlServer, Oracle, Sqlite, Firebird, Odbc, 达梦, 人大金仓, 神舟通用, 翰高, And Access</Description>
|
<Description>FreeSql is the ORM in .NetCore, .NetFramework, And Xamarin. It supports Mysql, Postgresql, SqlServer, Oracle, Sqlite, Firebird, Odbc, 达梦, 人大金仓, 神舟通用, 南大通用, 翰高, And Access</Description>
|
||||||
<PackageProjectUrl>https://github.com/2881099/FreeSql</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/2881099/FreeSql</PackageProjectUrl>
|
||||||
<RepositoryUrl>https://github.com/2881099/FreeSql</RepositoryUrl>
|
<RepositoryUrl>https://github.com/2881099/FreeSql</RepositoryUrl>
|
||||||
<RepositoryType>git</RepositoryType>
|
<RepositoryType>git</RepositoryType>
|
||||||
|
@ -1629,6 +1629,13 @@
|
|||||||
<param name="tableRule"></param>
|
<param name="tableRule"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:FreeSql.IInsert`1.AsTable(System.String)">
|
||||||
|
<summary>
|
||||||
|
设置表名
|
||||||
|
</summary>
|
||||||
|
<param name="tableName"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:FreeSql.IInsert`1.AsType(System.Type)">
|
<member name="M:FreeSql.IInsert`1.AsType(System.Type)">
|
||||||
<summary>
|
<summary>
|
||||||
动态Type,在使用 Insert<object> 后使用本方法,指定实体类型
|
动态Type,在使用 Insert<object> 后使用本方法,指定实体类型
|
||||||
|
@ -119,6 +119,12 @@ namespace FreeSql
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
IInsert<T1> AsTable(Func<string, string> tableRule);
|
IInsert<T1> AsTable(Func<string, string> tableRule);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
/// 设置表名
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="tableName"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
IInsert<T1> AsTable(string tableName);
|
||||||
|
/// <summary>
|
||||||
/// 动态Type,在使用 Insert<object> 后使用本方法,指定实体类型
|
/// 动态Type,在使用 Insert<object> 后使用本方法,指定实体类型
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="entityType"></param>
|
/// <param name="entityType"></param>
|
||||||
|
@ -94,7 +94,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
protected void SyncStructure(params TypeAndName[] objects)
|
protected void SyncStructure(params TypeAndName[] objects)
|
||||||
{
|
{
|
||||||
if (objects == null) return;
|
if (objects == null) return;
|
||||||
var syncObjects = objects.Where(a => a.entityType != typeof(object) && _dicSycedGetOrAdd(a.entityType).ContainsKey(GetTableNameLowerOrUpper(a.tableName)) == false && GetTableByEntity(a.entityType)?.DisableSyncStructure == false)
|
var syncObjects = objects.Where(a => a.entityType != null && a.entityType != typeof(object) && _dicSycedGetOrAdd(a.entityType).ContainsKey(GetTableNameLowerOrUpper(a.tableName)) == false && GetTableByEntity(a.entityType)?.DisableSyncStructure == false)
|
||||||
.Select(a => new TypeAndName(a.entityType, GetTableNameLowerOrUpper(a.tableName))).ToArray();
|
.Select(a => new TypeAndName(a.entityType, GetTableNameLowerOrUpper(a.tableName))).ToArray();
|
||||||
if (syncObjects.Any() == false) return;
|
if (syncObjects.Any() == false) return;
|
||||||
var before = new Aop.SyncStructureBeforeEventArgs(syncObjects.Select(a => a.entityType).ToArray());
|
var before = new Aop.SyncStructureBeforeEventArgs(syncObjects.Select(a => a.entityType).ToArray());
|
||||||
|
@ -9,6 +9,7 @@ using System.Linq;
|
|||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using System.Collections;
|
||||||
|
|
||||||
namespace FreeSql.Internal.CommonProvider
|
namespace FreeSql.Internal.CommonProvider
|
||||||
{
|
{
|
||||||
@ -115,6 +116,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
{
|
{
|
||||||
if (source != null)
|
if (source != null)
|
||||||
{
|
{
|
||||||
|
GetDictionaryTableInfo(source, _orm, ref _table);
|
||||||
AuditDataValue(this, source, _orm, _table, _auditValueChangedDict);
|
AuditDataValue(this, source, _orm, _table, _auditValueChangedDict);
|
||||||
_source.Add(source);
|
_source.Add(source);
|
||||||
}
|
}
|
||||||
@ -124,6 +126,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
{
|
{
|
||||||
if (source != null)
|
if (source != null)
|
||||||
{
|
{
|
||||||
|
GetDictionaryTableInfo(source.FirstOrDefault(), _orm, ref _table);
|
||||||
AuditDataValue(this, source, _orm, _table, _auditValueChangedDict);
|
AuditDataValue(this, source, _orm, _table, _auditValueChangedDict);
|
||||||
_source.AddRange(source);
|
_source.AddRange(source);
|
||||||
}
|
}
|
||||||
@ -134,12 +137,49 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
if (source != null)
|
if (source != null)
|
||||||
{
|
{
|
||||||
source = source.Where(a => a != null).ToList();
|
source = source.Where(a => a != null).ToList();
|
||||||
|
GetDictionaryTableInfo(source.FirstOrDefault(), _orm, ref _table);
|
||||||
AuditDataValue(this, source, _orm, _table, _auditValueChangedDict);
|
AuditDataValue(this, source, _orm, _table, _auditValueChangedDict);
|
||||||
_source.AddRange(source);
|
_source.AddRange(source);
|
||||||
|
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
public static void GetDictionaryTableInfo(T1 source, IFreeSql orm, ref TableInfo table)
|
||||||
|
{
|
||||||
|
if (table == null && typeof(T1) == typeof(Dictionary<string, object>))
|
||||||
|
{
|
||||||
|
var dic = source as Dictionary<string, object>;
|
||||||
|
table = new TableInfo();
|
||||||
|
table.Type = typeof(Dictionary<string, object>);
|
||||||
|
table.CsName = dic.TryGetValue("", out var tryval) ? string.Concat(tryval) : "";
|
||||||
|
table.DbName = table.CsName;
|
||||||
|
table.DisableSyncStructure = true;
|
||||||
|
table.IsDictionaryType = true;
|
||||||
|
var colpos = new List<ColumnInfo>();
|
||||||
|
foreach (var kv in dic)
|
||||||
|
{
|
||||||
|
var colName = kv.Key;
|
||||||
|
if (orm.CodeFirst.IsSyncStructureToLower) colName = colName.ToLower();
|
||||||
|
if (orm.CodeFirst.IsSyncStructureToUpper) colName = colName.ToUpper();
|
||||||
|
var col = new ColumnInfo
|
||||||
|
{
|
||||||
|
CsName = kv.Key,
|
||||||
|
Table = table,
|
||||||
|
Attribute = new DataAnnotations.ColumnAttribute
|
||||||
|
{
|
||||||
|
Name = colName,
|
||||||
|
MapType = typeof(object)
|
||||||
|
},
|
||||||
|
CsType = typeof(object)
|
||||||
|
};
|
||||||
|
table.Columns.Add(colName, col);
|
||||||
|
table.ColumnsByCs.Add(kv.Key, col);
|
||||||
|
colpos.Add(col);
|
||||||
|
}
|
||||||
|
table.ColumnsByPosition = colpos.ToArray();
|
||||||
|
colpos.Clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
public static void AuditDataValue(object sender, IEnumerable<T1> data, IFreeSql orm, TableInfo table, Dictionary<string, bool> changedDict)
|
public static void AuditDataValue(object sender, IEnumerable<T1> data, IFreeSql orm, TableInfo table, Dictionary<string, bool> changedDict)
|
||||||
{
|
{
|
||||||
if (data?.Any() != true) return;
|
if (data?.Any() != true) return;
|
||||||
@ -148,7 +188,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
}
|
}
|
||||||
public static void AuditDataValue(object sender, T1 data, IFreeSql orm, TableInfo table, Dictionary<string, bool> changedDict)
|
public static void AuditDataValue(object sender, T1 data, IFreeSql orm, TableInfo table, Dictionary<string, bool> changedDict)
|
||||||
{
|
{
|
||||||
if (data == null) return;
|
if (data == null || table == null) return;
|
||||||
if (typeof(T1) == typeof(object) && new[] { table.Type, table.TypeLazy }.Contains(data.GetType()) == false)
|
if (typeof(T1) == typeof(object) && new[] { table.Type, table.TypeLazy }.Contains(data.GetType()) == false)
|
||||||
throw new Exception($"操作的数据类型({data.GetType().DisplayCsharp()}) 与 AsType({table.Type.DisplayCsharp()}) 不一致,请检查。");
|
throw new Exception($"操作的数据类型({data.GetType().DisplayCsharp()}) 与 AsType({table.Type.DisplayCsharp()}) 不一致,请检查。");
|
||||||
foreach (var col in table.Columns.Values)
|
foreach (var col in table.Columns.Values)
|
||||||
@ -505,13 +545,14 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
|
|
||||||
protected string TableRuleInvoke()
|
protected string TableRuleInvoke()
|
||||||
{
|
{
|
||||||
if (_tableRule == null) return _table.DbName;
|
var tbname = _table?.DbName ?? "";
|
||||||
var newname = _tableRule(_table.DbName);
|
if (_tableRule == null) return tbname;
|
||||||
if (newname == _table.DbName) return _table.DbName;
|
var newname = _tableRule(tbname);
|
||||||
if (string.IsNullOrEmpty(newname)) return _table.DbName;
|
if (newname == tbname) return tbname;
|
||||||
|
if (string.IsNullOrEmpty(newname)) return tbname;
|
||||||
if (_orm.CodeFirst.IsSyncStructureToLower) newname = newname.ToLower();
|
if (_orm.CodeFirst.IsSyncStructureToLower) newname = newname.ToLower();
|
||||||
if (_orm.CodeFirst.IsSyncStructureToUpper) newname = newname.ToUpper();
|
if (_orm.CodeFirst.IsSyncStructureToUpper) newname = newname.ToUpper();
|
||||||
if (_orm.CodeFirst.IsAutoSyncStructure) _orm.CodeFirst.SyncStructure(_table.Type, newname);
|
if (_orm.CodeFirst.IsAutoSyncStructure) _orm.CodeFirst.SyncStructure(_table?.Type, newname);
|
||||||
return newname;
|
return newname;
|
||||||
}
|
}
|
||||||
public IInsert<T1> AsTable(Func<string, string> tableRule)
|
public IInsert<T1> AsTable(Func<string, string> tableRule)
|
||||||
@ -519,6 +560,11 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
_tableRule = tableRule;
|
_tableRule = tableRule;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
public IInsert<T1> AsTable(string tableName)
|
||||||
|
{
|
||||||
|
_tableRule = (oldname) => tableName;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
public IInsert<T1> AsType(Type entityType)
|
public IInsert<T1> AsType(Type entityType)
|
||||||
{
|
{
|
||||||
if (entityType == typeof(object)) throw new Exception("IInsert.AsType 参数不支持指定为 object");
|
if (entityType == typeof(object)) throw new Exception("IInsert.AsType 参数不支持指定为 object");
|
||||||
|
@ -31,6 +31,7 @@ namespace FreeSql.Internal.Model
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public object GetDbValue(object obj)
|
public object GetDbValue(object obj)
|
||||||
{
|
{
|
||||||
|
if (Table.IsDictionaryType) return (obj as Dictionary<string, object>)?.TryGetValue(CsName, out var tryval) == true ? tryval : null;
|
||||||
var dbval = Table.GetPropertyValue(obj, CsName);
|
var dbval = Table.GetPropertyValue(obj, CsName);
|
||||||
//if (ConversionCsToDb != null) dbval = ConversionCsToDb(dbval);
|
//if (ConversionCsToDb != null) dbval = ConversionCsToDb(dbval);
|
||||||
if (Attribute.MapType != CsType) dbval = Utils.GetDataReaderValue(Attribute.MapType, dbval);
|
if (Attribute.MapType != CsType) dbval = Utils.GetDataReaderValue(Attribute.MapType, dbval);
|
||||||
@ -40,7 +41,11 @@ namespace FreeSql.Internal.Model
|
|||||||
/// 获取 obj.CsName 属性原始值(不经过 MapType)
|
/// 获取 obj.CsName 属性原始值(不经过 MapType)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="obj"></param>
|
/// <param name="obj"></param>
|
||||||
public object GetValue(object obj) => Table.GetPropertyValue(obj, CsName);
|
public object GetValue(object obj)
|
||||||
|
{
|
||||||
|
if (Table.IsDictionaryType) return (obj as Dictionary<string, object>)?.TryGetValue(CsName, out var tryval) == true ? tryval : null;
|
||||||
|
return Table.GetPropertyValue(obj, CsName);
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置 obj.CsName 属性值
|
/// 设置 obj.CsName 属性值
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -25,6 +25,7 @@ namespace FreeSql.Internal.Model
|
|||||||
public bool DisableSyncStructure { get; set; }
|
public bool DisableSyncStructure { get; set; }
|
||||||
public string Comment { get; internal set; }
|
public string Comment { get; internal set; }
|
||||||
public bool IsRereadSql { get; internal set; }
|
public bool IsRereadSql { get; internal set; }
|
||||||
|
public bool IsDictionaryType { get; internal set; }
|
||||||
|
|
||||||
public ColumnInfo VersionColumn { get; set; }
|
public ColumnInfo VersionColumn { get; set; }
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ namespace FreeSql.ClickHouse
|
|||||||
column.DbTypeText = column.DbTypeTextFull;
|
column.DbTypeText = column.DbTypeTextFull;
|
||||||
//(?<=\()(\S +)(?=\))
|
//(?<=\()(\S +)(?=\))
|
||||||
}
|
}
|
||||||
switch (column.DbTypeText.ToLower())
|
switch (column.DbTypeText?.ToLower())
|
||||||
{
|
{
|
||||||
case "bit":
|
case "bit":
|
||||||
case "tinyint":
|
case "tinyint":
|
||||||
@ -86,7 +86,7 @@ namespace FreeSql.ClickHouse
|
|||||||
case "varchar": return DbType.String;
|
case "varchar": return DbType.String;
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
if (column.DbTypeText.ToLower().Contains("datetime"))
|
if (column.DbTypeText?.ToLower().Contains("datetime") == true)
|
||||||
return DbType.DateTime;
|
return DbType.DateTime;
|
||||||
return DbType.String;
|
return DbType.String;
|
||||||
}
|
}
|
||||||
|
@ -20,8 +20,8 @@ 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 (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, DbType = dbtype, Value = value };//QuoteParamterName(parameterName)
|
DbParameter ret = new ClickHouseDbParameter { ParameterName = parameterName, DbType = dbtype ?? default, Value = value };//QuoteParamterName(parameterName)
|
||||||
if (col != null)
|
if (col != null)
|
||||||
{
|
{
|
||||||
var dbtype2 = (DbType)_orm.DbFirst.GetDbType(new DatabaseModel.DbColumnInfo { DbTypeText = col.DbTypeText, DbTypeTextFull = col.Attribute.DbType, MaxLength = col.DbSize });
|
var dbtype2 = (DbType)_orm.DbFirst.GetDbType(new DatabaseModel.DbColumnInfo { DbTypeText = col.DbTypeText, DbTypeTextFull = col.Attribute.DbType, MaxLength = col.DbSize });
|
||||||
@ -40,8 +40,6 @@ namespace FreeSql.ClickHouse
|
|||||||
ret.Value = (bool)value ? 1 : 0;
|
ret.Value = (bool)value ? 1 : 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ret.DbType = dbtype;
|
|
||||||
_params?.Add(ret);
|
_params?.Add(ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -52,9 +50,7 @@ namespace FreeSql.ClickHouse
|
|||||||
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)
|
||||||
{
|
|
||||||
ret.DbType = (DbType)tp.Value;
|
ret.DbType = (DbType)tp.Value;
|
||||||
}
|
|
||||||
return ret;
|
return ret;
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -64,13 +60,9 @@ namespace FreeSql.ClickHouse
|
|||||||
if (string.IsNullOrWhiteSpace(col?.Attribute.RewriteSql) == false)
|
if (string.IsNullOrWhiteSpace(col?.Attribute.RewriteSql) == false)
|
||||||
return string.Format(col.Attribute.RewriteSql, sql);
|
return string.Format(col.Attribute.RewriteSql, sql);
|
||||||
if (Regex.IsMatch(sql, @"\{\{[\w\d]+_+\d:\{\d\}\}\}"))
|
if (Regex.IsMatch(sql, @"\{\{[\w\d]+_+\d:\{\d\}\}\}"))
|
||||||
{
|
|
||||||
return string.Format(sql, col.Attribute.DbType);
|
return string.Format(sql, col.Attribute.DbType);
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
return sql;
|
return sql;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string FormatSql(string sql, params object[] args) => sql?.FormatClickHouse(args);
|
public override string FormatSql(string sql, params object[] args) => sql?.FormatClickHouse(args);
|
||||||
|
@ -27,7 +27,7 @@ namespace FreeSql.Dameng
|
|||||||
public int GetDbType(DbColumnInfo column) => (int)GetSqlDbType(column);
|
public int GetDbType(DbColumnInfo column) => (int)GetSqlDbType(column);
|
||||||
DmDbType GetSqlDbType(DbColumnInfo column)
|
DmDbType GetSqlDbType(DbColumnInfo column)
|
||||||
{
|
{
|
||||||
var dbfull = column.DbTypeTextFull.ToLower();
|
var dbfull = column.DbTypeTextFull?.ToLower();
|
||||||
switch (dbfull)
|
switch (dbfull)
|
||||||
{
|
{
|
||||||
case "number(1)": return DmDbType.Bit;
|
case "number(1)": return DmDbType.Bit;
|
||||||
@ -55,7 +55,7 @@ namespace FreeSql.Dameng
|
|||||||
|
|
||||||
case "char(36)": return DmDbType.Char;
|
case "char(36)": return DmDbType.Char;
|
||||||
}
|
}
|
||||||
switch (column.DbTypeText.ToLower())
|
switch (column.DbTypeText?.ToLower())
|
||||||
{
|
{
|
||||||
case "bit":
|
case "bit":
|
||||||
_dicDbToCs.TryAdd(dbfull, _dicDbToCs["number(1)"]);
|
_dicDbToCs.TryAdd(dbfull, _dicDbToCs["number(1)"]);
|
||||||
@ -157,7 +157,7 @@ namespace FreeSql.Dameng
|
|||||||
return DmDbType.Double;
|
return DmDbType.Double;
|
||||||
case "rowid":
|
case "rowid":
|
||||||
default:
|
default:
|
||||||
_dicDbToCs.TryAdd(dbfull, _dicDbToCs["nvarchar2(255)"]);
|
if (dbfull != null) _dicDbToCs.TryAdd(dbfull, _dicDbToCs["nvarchar2(255)"]);
|
||||||
return DmDbType.VarChar;
|
return DmDbType.VarChar;
|
||||||
}
|
}
|
||||||
throw new NotImplementedException($"未实现 {column.DbTypeTextFull} 类型映射");
|
throw new NotImplementedException($"未实现 {column.DbTypeTextFull} 类型映射");
|
||||||
|
@ -18,7 +18,7 @@ namespace FreeSql.Dameng
|
|||||||
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 (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
|
if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
|
||||||
var dbtype = (DmDbType)_orm.CodeFirst.GetDbInfo(type)?.type;
|
var dbtype = (DmDbType?)_orm.CodeFirst.GetDbInfo(type)?.type;
|
||||||
switch (dbtype)
|
switch (dbtype)
|
||||||
{
|
{
|
||||||
case DmDbType.Bit:
|
case DmDbType.Bit:
|
||||||
@ -40,7 +40,7 @@ namespace FreeSql.Dameng
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
var ret = new DmParameter { ParameterName = QuoteParamterName(parameterName), DmSqlType = dbtype, Value = value };
|
var ret = new DmParameter { ParameterName = QuoteParamterName(parameterName), DmSqlType = dbtype ?? default, Value = value };
|
||||||
_params?.Add(ret);
|
_params?.Add(ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -27,10 +27,10 @@ namespace FreeSql.Firebird
|
|||||||
FbDbType GetFbDbType(DbColumnInfo column)
|
FbDbType GetFbDbType(DbColumnInfo column)
|
||||||
{
|
{
|
||||||
var dbtype = column.DbTypeText;
|
var dbtype = column.DbTypeText;
|
||||||
var isarray = dbtype.EndsWith("[]");
|
var isarray = dbtype?.EndsWith("[]") == true;
|
||||||
if (isarray) dbtype = dbtype.Remove(dbtype.Length - 2);
|
if (isarray) dbtype = dbtype.Remove(dbtype.Length - 2);
|
||||||
FbDbType ret = FbDbType.VarChar;
|
FbDbType ret = FbDbType.VarChar;
|
||||||
switch (dbtype.ToLower().TrimStart('_'))
|
switch (dbtype?.ToLower().TrimStart('_'))
|
||||||
{
|
{
|
||||||
case "bigint": ret = FbDbType.BigInt; break;
|
case "bigint": ret = FbDbType.BigInt; break;
|
||||||
case "blob": ret = FbDbType.Binary; break;
|
case "blob": ret = FbDbType.Binary; break;
|
||||||
|
@ -19,7 +19,7 @@ namespace FreeSql.Firebird
|
|||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
|
if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
|
||||||
var ret = new FbParameter { ParameterName = QuoteParamterName(parameterName), Value = value };
|
var ret = new FbParameter { ParameterName = QuoteParamterName(parameterName), Value = value };
|
||||||
var dbtype = (FbDbType)_orm.CodeFirst.GetDbInfo(type)?.type;
|
var dbtype = (FbDbType?)_orm.CodeFirst.GetDbInfo(type)?.type;
|
||||||
if (col != null)
|
if (col != null)
|
||||||
{
|
{
|
||||||
var dbtype2 = (FbDbType)_orm.DbFirst.GetDbType(new DatabaseModel.DbColumnInfo { DbTypeText = col.DbTypeText, DbTypeTextFull = col.Attribute.DbType, MaxLength = col.DbSize });
|
var dbtype2 = (FbDbType)_orm.DbFirst.GetDbType(new DatabaseModel.DbColumnInfo { DbTypeText = col.DbTypeText, DbTypeTextFull = col.Attribute.DbType, MaxLength = col.DbSize });
|
||||||
@ -35,7 +35,7 @@ namespace FreeSql.Firebird
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ret.FbDbType = dbtype;
|
ret.FbDbType = dbtype ?? default;
|
||||||
_params?.Add(ret);
|
_params?.Add(ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ namespace FreeSql.GBase
|
|||||||
{
|
{
|
||||||
var dbtype = column.DbTypeText;
|
var dbtype = column.DbTypeText;
|
||||||
OdbcType ret = OdbcType.VarChar;
|
OdbcType ret = OdbcType.VarChar;
|
||||||
switch (dbtype.ToLower().TrimStart('_'))
|
switch (dbtype?.ToLower().TrimStart('_'))
|
||||||
{
|
{
|
||||||
case "int8":
|
case "int8":
|
||||||
case "serial8":
|
case "serial8":
|
||||||
|
@ -19,7 +19,7 @@ namespace FreeSql.GBase
|
|||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(parameterName)) parameterName = "?";
|
if (string.IsNullOrEmpty(parameterName)) parameterName = "?";
|
||||||
var ret = new OdbcParameter { ParameterName = "?", Value = value };
|
var ret = new OdbcParameter { ParameterName = "?", Value = value };
|
||||||
var dbtype = (OdbcType)_orm.CodeFirst.GetDbInfo(type)?.type;
|
var dbtype = (OdbcType?)_orm.CodeFirst.GetDbInfo(type)?.type;
|
||||||
if (col != null)
|
if (col != null)
|
||||||
{
|
{
|
||||||
var dbtype2 = (OdbcType)_orm.DbFirst.GetDbType(new DatabaseModel.DbColumnInfo { DbTypeText = col.DbTypeText, DbTypeTextFull = col.Attribute.DbType, MaxLength = col.DbSize });
|
var dbtype2 = (OdbcType)_orm.DbFirst.GetDbType(new DatabaseModel.DbColumnInfo { DbTypeText = col.DbTypeText, DbTypeTextFull = col.Attribute.DbType, MaxLength = col.DbSize });
|
||||||
@ -35,7 +35,7 @@ namespace FreeSql.GBase
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ret.OdbcType = dbtype;
|
ret.OdbcType = dbtype ?? default;
|
||||||
_params?.Add(ret);
|
_params?.Add(ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -29,10 +29,10 @@ namespace FreeSql.KingbaseES
|
|||||||
KdbndpDbType GetSqlDbType(DbColumnInfo column)
|
KdbndpDbType GetSqlDbType(DbColumnInfo column)
|
||||||
{
|
{
|
||||||
var dbtype = column.DbTypeText;
|
var dbtype = column.DbTypeText;
|
||||||
var isarray = dbtype.EndsWith("[]");
|
var isarray = dbtype?.EndsWith("[]") == true;
|
||||||
if (isarray) dbtype = dbtype.Remove(dbtype.Length - 2);
|
if (isarray) dbtype = dbtype.Remove(dbtype.Length - 2);
|
||||||
var ret = KdbndpDbType.Unknown;
|
var ret = KdbndpDbType.Unknown;
|
||||||
switch (dbtype.ToLower().TrimStart('_'))
|
switch (dbtype?.ToLower().TrimStart('_'))
|
||||||
{
|
{
|
||||||
case "tinyint": ret = KdbndpDbType.Smallint; break;
|
case "tinyint": ret = KdbndpDbType.Smallint; break;
|
||||||
case "int2": ret = KdbndpDbType.Smallint; break;
|
case "int2": ret = KdbndpDbType.Smallint; break;
|
||||||
|
@ -30,8 +30,8 @@ namespace FreeSql.MySql
|
|||||||
public int GetDbType(DbColumnInfo column) => (int)GetMySqlDbType(column);
|
public int GetDbType(DbColumnInfo column) => (int)GetMySqlDbType(column);
|
||||||
MySqlDbType GetMySqlDbType(DbColumnInfo column)
|
MySqlDbType GetMySqlDbType(DbColumnInfo column)
|
||||||
{
|
{
|
||||||
var is_unsigned = column.DbTypeTextFull.ToLower().EndsWith(" unsigned");
|
var is_unsigned = column.DbTypeTextFull?.ToLower().EndsWith(" unsigned") == true;
|
||||||
switch (column.DbTypeText.ToLower())
|
switch (column.DbTypeText?.ToLower())
|
||||||
{
|
{
|
||||||
case "bit": return MySqlDbType.Bit;
|
case "bit": return MySqlDbType.Bit;
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ namespace FreeSql.MySql
|
|||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
|
if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
|
||||||
var ret = new MySqlParameter { ParameterName = QuoteParamterName(parameterName), Value = value };
|
var ret = new MySqlParameter { ParameterName = QuoteParamterName(parameterName), Value = value };
|
||||||
var dbtype = (MySqlDbType)_orm.CodeFirst.GetDbInfo(type)?.type;
|
var dbtype = (MySqlDbType?)_orm.CodeFirst.GetDbInfo(type)?.type;
|
||||||
if (col != null)
|
if (col != null)
|
||||||
{
|
{
|
||||||
var dbtype2 = (MySqlDbType)_orm.DbFirst.GetDbType(new DatabaseModel.DbColumnInfo { DbTypeText = col.DbTypeText, DbTypeTextFull = col.Attribute.DbType, MaxLength = col.DbSize });
|
var dbtype2 = (MySqlDbType)_orm.DbFirst.GetDbType(new DatabaseModel.DbColumnInfo { DbTypeText = col.DbTypeText, DbTypeTextFull = col.Attribute.DbType, MaxLength = col.DbSize });
|
||||||
@ -46,7 +46,7 @@ namespace FreeSql.MySql
|
|||||||
if (value != null) ret.Value = (value as MygisGeometry).AsText();
|
if (value != null) ret.Value = (value as MygisGeometry).AsText();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ret.MySqlDbType = dbtype;
|
ret.MySqlDbType = dbtype ?? default;
|
||||||
_params?.Add(ret);
|
_params?.Add(ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ namespace FreeSql.MySql
|
|||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
|
if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
|
||||||
var ret = new MySqlParameter { ParameterName = QuoteParamterName(parameterName), Value = value };
|
var ret = new MySqlParameter { ParameterName = QuoteParamterName(parameterName), Value = value };
|
||||||
var dbtype = (MySqlDbType)_orm.CodeFirst.GetDbInfo(type)?.type;
|
var dbtype = (MySqlDbType?)_orm.CodeFirst.GetDbInfo(type)?.type;
|
||||||
if (col != null)
|
if (col != null)
|
||||||
{
|
{
|
||||||
var dbtype2 = (MySqlDbType)_orm.DbFirst.GetDbType(new DatabaseModel.DbColumnInfo { DbTypeText = col.DbTypeText, DbTypeTextFull = col.Attribute.DbType, MaxLength = col.DbSize });
|
var dbtype2 = (MySqlDbType)_orm.DbFirst.GetDbType(new DatabaseModel.DbColumnInfo { DbTypeText = col.DbTypeText, DbTypeTextFull = col.Attribute.DbType, MaxLength = col.DbSize });
|
||||||
@ -44,7 +44,7 @@ namespace FreeSql.MySql
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ret.MySqlDbType = dbtype;
|
ret.MySqlDbType = dbtype ?? default;
|
||||||
if (ret.MySqlDbType == MySqlDbType.Enum && value != null)
|
if (ret.MySqlDbType == MySqlDbType.Enum && value != null)
|
||||||
ret.Value = EnumValueToMySql(value);
|
ret.Value = EnumValueToMySql(value);
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
public int GetDbType(DbColumnInfo column) => (int)GetSqlDbType(column);
|
public int GetDbType(DbColumnInfo column) => (int)GetSqlDbType(column);
|
||||||
OdbcType GetSqlDbType(DbColumnInfo column)
|
OdbcType GetSqlDbType(DbColumnInfo column)
|
||||||
{
|
{
|
||||||
var dbfull = column.DbTypeTextFull.ToLower();
|
var dbfull = column.DbTypeTextFull?.ToLower();
|
||||||
switch (dbfull)
|
switch (dbfull)
|
||||||
{
|
{
|
||||||
case "number(1)": return OdbcType.Bit;
|
case "number(1)": return OdbcType.Bit;
|
||||||
@ -55,7 +55,7 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
|
|
||||||
case "char(36)": return OdbcType.Char;
|
case "char(36)": return OdbcType.Char;
|
||||||
}
|
}
|
||||||
switch (column.DbTypeText.ToLower())
|
switch (column.DbTypeText?.ToLower())
|
||||||
{
|
{
|
||||||
case "bit":
|
case "bit":
|
||||||
_dicDbToCs.TryAdd(dbfull, _dicDbToCs["number(1)"]);
|
_dicDbToCs.TryAdd(dbfull, _dicDbToCs["number(1)"]);
|
||||||
@ -157,7 +157,7 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
return OdbcType.Double;
|
return OdbcType.Double;
|
||||||
case "rowid":
|
case "rowid":
|
||||||
default:
|
default:
|
||||||
_dicDbToCs.TryAdd(dbfull, _dicDbToCs["nvarchar2(255)"]);
|
if (dbfull != null) _dicDbToCs.TryAdd(dbfull, _dicDbToCs["nvarchar2(255)"]);
|
||||||
return OdbcType.NVarChar;
|
return OdbcType.NVarChar;
|
||||||
}
|
}
|
||||||
throw new NotImplementedException($"未实现 {column.DbTypeTextFull} 类型映射");
|
throw new NotImplementedException($"未实现 {column.DbTypeTextFull} 类型映射");
|
||||||
|
@ -18,7 +18,7 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
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 (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
|
if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
|
||||||
var dbtype = (OdbcType)_orm.CodeFirst.GetDbInfo(type)?.type;
|
var dbtype = (OdbcType?)_orm.CodeFirst.GetDbInfo(type)?.type;
|
||||||
switch (dbtype)
|
switch (dbtype)
|
||||||
{
|
{
|
||||||
case OdbcType.Bit:
|
case OdbcType.Bit:
|
||||||
@ -36,7 +36,7 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
value = string.Concat(value);
|
value = string.Concat(value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName), OdbcType = dbtype, Value = value };
|
var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName), OdbcType = dbtype ?? default, Value = value };
|
||||||
_params?.Add(ret);
|
_params?.Add(ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -44,7 +44,7 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
public override DbParameter[] GetDbParamtersByObject(string sql, object obj) =>
|
public override DbParameter[] GetDbParamtersByObject(string sql, object obj) =>
|
||||||
Utils.GetDbParamtersByObject<OdbcParameter>(sql, obj, null, (name, type, value) =>
|
Utils.GetDbParamtersByObject<OdbcParameter>(sql, obj, null, (name, type, value) =>
|
||||||
{
|
{
|
||||||
var dbtype = (OdbcType)_orm.CodeFirst.GetDbInfo(type)?.type;
|
var dbtype = (OdbcType?)_orm.CodeFirst.GetDbInfo(type)?.type;
|
||||||
switch (dbtype)
|
switch (dbtype)
|
||||||
{
|
{
|
||||||
case OdbcType.Bit:
|
case OdbcType.Bit:
|
||||||
@ -62,7 +62,7 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
value = string.Concat(value);
|
value = string.Concat(value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
var ret = new OdbcParameter { ParameterName = $":{name}", OdbcType = dbtype, Value = value };
|
var ret = new OdbcParameter { ParameterName = $":{name}", OdbcType = dbtype ?? default, Value = value };
|
||||||
return ret;
|
return ret;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -29,10 +29,10 @@ namespace FreeSql.Odbc.KingbaseES
|
|||||||
OdbcType GetSqlDbType(DbColumnInfo column)
|
OdbcType GetSqlDbType(DbColumnInfo column)
|
||||||
{
|
{
|
||||||
var dbtype = column.DbTypeText;
|
var dbtype = column.DbTypeText;
|
||||||
var isarray = dbtype.EndsWith("[]");
|
var isarray = dbtype?.EndsWith("[]") == true;
|
||||||
if (isarray) dbtype = dbtype.Remove(dbtype.Length - 2);
|
if (isarray) dbtype = dbtype.Remove(dbtype.Length - 2);
|
||||||
var ret = OdbcType.VarChar;
|
var ret = OdbcType.VarChar;
|
||||||
switch (dbtype.ToLower().TrimStart('_'))
|
switch (dbtype?.ToLower().TrimStart('_'))
|
||||||
{
|
{
|
||||||
case "tinyint": ret = OdbcType.TinyInt; break;
|
case "tinyint": ret = OdbcType.TinyInt; break;
|
||||||
case "int2": ret = OdbcType.SmallInt; break;
|
case "int2": ret = OdbcType.SmallInt; break;
|
||||||
|
@ -26,8 +26,8 @@ namespace FreeSql.Odbc.MySql
|
|||||||
public int GetDbType(DbColumnInfo column) => (int)GetOdbcType(column);
|
public int GetDbType(DbColumnInfo column) => (int)GetOdbcType(column);
|
||||||
OdbcType GetOdbcType(DbColumnInfo column)
|
OdbcType GetOdbcType(DbColumnInfo column)
|
||||||
{
|
{
|
||||||
var is_unsigned = column.DbTypeTextFull.ToLower().EndsWith(" unsigned");
|
var is_unsigned = column.DbTypeTextFull?.ToLower().EndsWith(" unsigned") == true;
|
||||||
switch (column.DbTypeText.ToLower())
|
switch (column.DbTypeText?.ToLower())
|
||||||
{
|
{
|
||||||
case "bit": return OdbcType.Bit;
|
case "bit": return OdbcType.Bit;
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
public int GetDbType(DbColumnInfo column) => (int)GetSqlDbType(column);
|
public int GetDbType(DbColumnInfo column) => (int)GetSqlDbType(column);
|
||||||
OdbcType GetSqlDbType(DbColumnInfo column)
|
OdbcType GetSqlDbType(DbColumnInfo column)
|
||||||
{
|
{
|
||||||
var dbfull = column.DbTypeTextFull.ToLower();
|
var dbfull = column.DbTypeTextFull?.ToLower();
|
||||||
switch (dbfull)
|
switch (dbfull)
|
||||||
{
|
{
|
||||||
case "number(1)": return OdbcType.Bit;
|
case "number(1)": return OdbcType.Bit;
|
||||||
@ -55,7 +55,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
|
|
||||||
case "char(36 char)": return OdbcType.Char;
|
case "char(36 char)": return OdbcType.Char;
|
||||||
}
|
}
|
||||||
switch (column.DbTypeText.ToLower())
|
switch (column.DbTypeText?.ToLower())
|
||||||
{
|
{
|
||||||
case "number":
|
case "number":
|
||||||
_dicDbToCs.TryAdd(dbfull, _dicDbToCs["number(10,2)"]);
|
_dicDbToCs.TryAdd(dbfull, _dicDbToCs["number(10,2)"]);
|
||||||
@ -110,7 +110,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
return OdbcType.Double;
|
return OdbcType.Double;
|
||||||
case "rowid":
|
case "rowid":
|
||||||
default:
|
default:
|
||||||
_dicDbToCs.TryAdd(dbfull, _dicDbToCs["nvarchar2(255)"]);
|
if (dbfull != null) _dicDbToCs.TryAdd(dbfull, _dicDbToCs["nvarchar2(255)"]);
|
||||||
return OdbcType.NVarChar;
|
return OdbcType.NVarChar;
|
||||||
}
|
}
|
||||||
throw new NotImplementedException($"未实现 {column.DbTypeTextFull} 类型映射");
|
throw new NotImplementedException($"未实现 {column.DbTypeTextFull} 类型映射");
|
||||||
|
@ -18,7 +18,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
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 (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
|
if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
|
||||||
var dbtype = (OdbcType)_orm.CodeFirst.GetDbInfo(type)?.type;
|
var dbtype = (OdbcType?)_orm.CodeFirst.GetDbInfo(type)?.type;
|
||||||
switch (dbtype)
|
switch (dbtype)
|
||||||
{
|
{
|
||||||
case OdbcType.Bit:
|
case OdbcType.Bit:
|
||||||
@ -36,7 +36,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
value = string.Concat(value);
|
value = string.Concat(value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName), OdbcType = dbtype, Value = value };
|
var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName), OdbcType = dbtype ?? default, Value = value };
|
||||||
_params?.Add(ret);
|
_params?.Add(ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -44,7 +44,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
public override DbParameter[] GetDbParamtersByObject(string sql, object obj) =>
|
public override DbParameter[] GetDbParamtersByObject(string sql, object obj) =>
|
||||||
Utils.GetDbParamtersByObject<OdbcParameter>(sql, obj, null, (name, type, value) =>
|
Utils.GetDbParamtersByObject<OdbcParameter>(sql, obj, null, (name, type, value) =>
|
||||||
{
|
{
|
||||||
var dbtype = (OdbcType)_orm.CodeFirst.GetDbInfo(type)?.type;
|
var dbtype = (OdbcType?)_orm.CodeFirst.GetDbInfo(type)?.type;
|
||||||
switch (dbtype)
|
switch (dbtype)
|
||||||
{
|
{
|
||||||
case OdbcType.Bit:
|
case OdbcType.Bit:
|
||||||
@ -62,7 +62,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
value = string.Concat(value);
|
value = string.Concat(value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
var ret = new OdbcParameter { ParameterName = $":{name}", OdbcType = dbtype, Value = value };
|
var ret = new OdbcParameter { ParameterName = $":{name}", OdbcType = dbtype ?? default, Value = value };
|
||||||
return ret;
|
return ret;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -49,10 +49,10 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
OdbcType GetOdbcType(DbColumnInfo column)
|
OdbcType GetOdbcType(DbColumnInfo column)
|
||||||
{
|
{
|
||||||
var dbtype = column.DbTypeText;
|
var dbtype = column.DbTypeText;
|
||||||
var isarray = dbtype.EndsWith("[]");
|
var isarray = dbtype?.EndsWith("[]") == true;
|
||||||
if (isarray) dbtype = dbtype.Remove(dbtype.Length - 2);
|
if (isarray) dbtype = dbtype.Remove(dbtype.Length - 2);
|
||||||
OdbcType ret = OdbcType.VarChar;
|
OdbcType ret = OdbcType.VarChar;
|
||||||
switch (dbtype.ToLower().TrimStart('_'))
|
switch (dbtype?.ToLower().TrimStart('_'))
|
||||||
{
|
{
|
||||||
case "int2": ret = OdbcType.SmallInt; break;
|
case "int2": ret = OdbcType.SmallInt; break;
|
||||||
case "int4": ret = OdbcType.Int; break;
|
case "int4": ret = OdbcType.Int; break;
|
||||||
|
@ -25,7 +25,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
public int GetDbType(DbColumnInfo column) => (int)GetSqlDbType(column);
|
public int GetDbType(DbColumnInfo column) => (int)GetSqlDbType(column);
|
||||||
OdbcType GetSqlDbType(DbColumnInfo column)
|
OdbcType GetSqlDbType(DbColumnInfo column)
|
||||||
{
|
{
|
||||||
switch (column.DbTypeText.ToLower())
|
switch (column.DbTypeText?.ToLower())
|
||||||
{
|
{
|
||||||
case "bit": return OdbcType.Bit;
|
case "bit": return OdbcType.Bit;
|
||||||
case "tinyint": return OdbcType.TinyInt;
|
case "tinyint": return OdbcType.TinyInt;
|
||||||
|
@ -27,7 +27,7 @@ namespace FreeSql.Oracle
|
|||||||
public int GetDbType(DbColumnInfo column) => (int)GetSqlDbType(column);
|
public int GetDbType(DbColumnInfo column) => (int)GetSqlDbType(column);
|
||||||
OracleDbType GetSqlDbType(DbColumnInfo column)
|
OracleDbType GetSqlDbType(DbColumnInfo column)
|
||||||
{
|
{
|
||||||
var dbfull = column.DbTypeTextFull.ToLower();
|
var dbfull = column.DbTypeTextFull?.ToLower();
|
||||||
switch (dbfull)
|
switch (dbfull)
|
||||||
{
|
{
|
||||||
case "number(1)": return OracleDbType.Boolean;
|
case "number(1)": return OracleDbType.Boolean;
|
||||||
@ -55,7 +55,7 @@ namespace FreeSql.Oracle
|
|||||||
|
|
||||||
case "char(36 char)": return OracleDbType.Char;
|
case "char(36 char)": return OracleDbType.Char;
|
||||||
}
|
}
|
||||||
switch (column.DbTypeText.ToLower())
|
switch (column.DbTypeText?.ToLower())
|
||||||
{
|
{
|
||||||
case "number":
|
case "number":
|
||||||
_dicDbToCs.TryAdd(dbfull, _dicDbToCs["number(10,2)"]);
|
_dicDbToCs.TryAdd(dbfull, _dicDbToCs["number(10,2)"]);
|
||||||
@ -110,7 +110,7 @@ namespace FreeSql.Oracle
|
|||||||
return OracleDbType.BinaryDouble;
|
return OracleDbType.BinaryDouble;
|
||||||
case "rowid":
|
case "rowid":
|
||||||
default:
|
default:
|
||||||
_dicDbToCs.TryAdd(dbfull, _dicDbToCs["nvarchar2(255)"]);
|
if (dbfull != null) _dicDbToCs.TryAdd(dbfull, _dicDbToCs["nvarchar2(255)"]);
|
||||||
return OracleDbType.NVarchar2;
|
return OracleDbType.NVarchar2;
|
||||||
}
|
}
|
||||||
throw new NotImplementedException($"未实现 {column.DbTypeTextFull} 类型映射");
|
throw new NotImplementedException($"未实现 {column.DbTypeTextFull} 类型映射");
|
||||||
|
@ -18,17 +18,18 @@ namespace FreeSql.Oracle
|
|||||||
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 (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
|
if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
|
||||||
var dbtype = (OracleDbType)_orm.CodeFirst.GetDbInfo(type)?.type;
|
var dbtype = (OracleDbType?)_orm.CodeFirst.GetDbInfo(type)?.type;
|
||||||
if (dbtype == OracleDbType.Boolean)
|
if (dbtype == OracleDbType.Boolean)
|
||||||
{
|
{
|
||||||
if (value == null) value = null;
|
if (value == null) value = null;
|
||||||
else value = (bool)value == true ? 1 : 0;
|
else value = (bool)value == true ? 1 : 0;
|
||||||
dbtype = OracleDbType.Int16;
|
dbtype = OracleDbType.Int16;
|
||||||
}
|
}
|
||||||
var ret = new OracleParameter { ParameterName = QuoteParamterName(parameterName), OracleDbType = dbtype, Value = value };
|
var ret = new OracleParameter { ParameterName = QuoteParamterName(parameterName), Value = value };
|
||||||
|
if (dbtype != null) ret.OracleDbType = dbtype.Value;
|
||||||
if (col != null)
|
if (col != null)
|
||||||
{
|
{
|
||||||
var dbtype2 = (OracleDbType)_orm.DbFirst.GetDbType(new DatabaseModel.DbColumnInfo { DbTypeTextFull = col.Attribute.DbType.Replace("NOT NULL", "").Replace(" NULL", "").Trim(), DbTypeText = col.DbTypeText });
|
var dbtype2 = (OracleDbType)_orm.DbFirst.GetDbType(new DatabaseModel.DbColumnInfo { DbTypeTextFull = col.Attribute.DbType?.Replace("NOT NULL", "").Replace(" NULL", "").Trim(), DbTypeText = col.DbTypeText });
|
||||||
switch (dbtype2)
|
switch (dbtype2)
|
||||||
{
|
{
|
||||||
case OracleDbType.Char:
|
case OracleDbType.Char:
|
||||||
|
@ -55,10 +55,10 @@ namespace FreeSql.PostgreSQL
|
|||||||
NpgsqlDbType GetNpgsqlDbType(DbColumnInfo column)
|
NpgsqlDbType GetNpgsqlDbType(DbColumnInfo column)
|
||||||
{
|
{
|
||||||
var dbtype = column.DbTypeText;
|
var dbtype = column.DbTypeText;
|
||||||
var isarray = dbtype.EndsWith("[]");
|
var isarray = dbtype?.EndsWith("[]") == true;
|
||||||
if (isarray) dbtype = dbtype.Remove(dbtype.Length - 2);
|
if (isarray) dbtype = dbtype.Remove(dbtype.Length - 2);
|
||||||
NpgsqlDbType ret = NpgsqlDbType.Unknown;
|
NpgsqlDbType ret = NpgsqlDbType.Unknown;
|
||||||
switch (dbtype.ToLower().TrimStart('_'))
|
switch (dbtype?.ToLower().TrimStart('_'))
|
||||||
{
|
{
|
||||||
case "int2": ret = NpgsqlDbType.Smallint; break;
|
case "int2": ret = NpgsqlDbType.Smallint; break;
|
||||||
case "int4": ret = NpgsqlDbType.Integer; break;
|
case "int4": ret = NpgsqlDbType.Integer; break;
|
||||||
|
@ -30,10 +30,10 @@ namespace FreeSql.ShenTong
|
|||||||
OscarDbType GetOscarDbType(DbColumnInfo column)
|
OscarDbType GetOscarDbType(DbColumnInfo column)
|
||||||
{
|
{
|
||||||
var dbtype = column.DbTypeText;
|
var dbtype = column.DbTypeText;
|
||||||
var isarray = dbtype.EndsWith("[]");
|
var isarray = dbtype?.EndsWith("[]") == true;
|
||||||
if (isarray) dbtype = dbtype.Remove(dbtype.Length - 2);
|
if (isarray) dbtype = dbtype.Remove(dbtype.Length - 2);
|
||||||
OscarDbType ret = OscarDbType.Oidvector;
|
OscarDbType ret = OscarDbType.Oidvector;
|
||||||
switch (dbtype.ToLower().TrimStart('_'))
|
switch (dbtype?.ToLower().TrimStart('_'))
|
||||||
{
|
{
|
||||||
case "int2": ret = OscarDbType.SmallInt; break;
|
case "int2": ret = OscarDbType.SmallInt; break;
|
||||||
case "int4": ret = OscarDbType.Integer; break;
|
case "int4": ret = OscarDbType.Integer; break;
|
||||||
|
@ -24,7 +24,7 @@ namespace FreeSql.SqlServer
|
|||||||
public int GetDbType(DbColumnInfo column) => (int)GetSqlDbType(column);
|
public int GetDbType(DbColumnInfo column) => (int)GetSqlDbType(column);
|
||||||
SqlDbType GetSqlDbType(DbColumnInfo column)
|
SqlDbType GetSqlDbType(DbColumnInfo column)
|
||||||
{
|
{
|
||||||
switch (column.DbTypeText.ToLower())
|
switch (column.DbTypeText?.ToLower())
|
||||||
{
|
{
|
||||||
case "bit": return SqlDbType.Bit;
|
case "bit": return SqlDbType.Bit;
|
||||||
case "tinyint": return SqlDbType.TinyInt;
|
case "tinyint": return SqlDbType.TinyInt;
|
||||||
|
@ -26,7 +26,7 @@ namespace FreeSql.Sqlite
|
|||||||
public int GetDbType(DbColumnInfo column) => (int)GetSqlDbType(column);
|
public int GetDbType(DbColumnInfo column) => (int)GetSqlDbType(column);
|
||||||
DbType GetSqlDbType(DbColumnInfo column)
|
DbType GetSqlDbType(DbColumnInfo column)
|
||||||
{
|
{
|
||||||
var dbfull = column.DbTypeTextFull.ToLower();
|
var dbfull = column.DbTypeTextFull?.ToLower();
|
||||||
switch (dbfull)
|
switch (dbfull)
|
||||||
{
|
{
|
||||||
case "boolean": return DbType.Boolean;
|
case "boolean": return DbType.Boolean;
|
||||||
@ -50,7 +50,7 @@ namespace FreeSql.Sqlite
|
|||||||
|
|
||||||
case "character(36)": return DbType.AnsiString;
|
case "character(36)": return DbType.AnsiString;
|
||||||
}
|
}
|
||||||
switch (column.DbTypeText.ToLower())
|
switch (column.DbTypeText?.ToLower())
|
||||||
{
|
{
|
||||||
case "int":
|
case "int":
|
||||||
_dicDbToCs.TryAdd(dbfull, _dicDbToCs["integer"]);
|
_dicDbToCs.TryAdd(dbfull, _dicDbToCs["integer"]);
|
||||||
@ -99,7 +99,7 @@ namespace FreeSql.Sqlite
|
|||||||
return DbType.String;
|
return DbType.String;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
_dicDbToCs.TryAdd(dbfull, _dicDbToCs["nvarchar(255)"]);
|
if (dbfull != null) _dicDbToCs.TryAdd(dbfull, _dicDbToCs["nvarchar(255)"]);
|
||||||
return DbType.String;
|
return DbType.String;
|
||||||
}
|
}
|
||||||
throw new NotImplementedException($"未实现 {column.DbTypeTextFull} 类型映射");
|
throw new NotImplementedException($"未实现 {column.DbTypeTextFull} 类型映射");
|
||||||
|
@ -23,7 +23,7 @@ namespace FreeSql.Sqlite
|
|||||||
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 (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;
|
||||||
switch (dbtype)
|
switch (dbtype)
|
||||||
{
|
{
|
||||||
case DbType.Guid:
|
case DbType.Guid:
|
||||||
@ -43,7 +43,7 @@ namespace FreeSql.Sqlite
|
|||||||
var ret = new SQLiteParameter();
|
var ret = new SQLiteParameter();
|
||||||
#endif
|
#endif
|
||||||
ret.ParameterName = QuoteParamterName(parameterName);
|
ret.ParameterName = QuoteParamterName(parameterName);
|
||||||
ret.DbType = dbtype;
|
ret.DbType = dbtype ?? default;
|
||||||
ret.Value = value;
|
ret.Value = value;
|
||||||
_params?.Add(ret);
|
_params?.Add(ret);
|
||||||
return ret;
|
return ret;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user