From 646d9532af3c6205365de92270d5077266002cb2 Mon Sep 17 00:00:00 2001
From: 28810 <28810@YEXIANGQIN>
Date: Mon, 24 Feb 2020 18:08:04 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BF=AE=E9=A5=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
FreeSql/FreeSql.xml | 330 +++++++++---------
.../SqlServer/OdbcSqlServerCodeFirst.cs | 4 +-
.../SqlServerCodeFirst.cs | 4 +-
3 files changed, 178 insertions(+), 160 deletions(-)
diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml
index 66b08dae..21df8587 100644
--- a/FreeSql/FreeSql.xml
+++ b/FreeSql/FreeSql.xml
@@ -2426,7 +2426,180 @@
-
+ Insert/Update自动值处理
+
+
+
+
+ 内置解析功能,可辅助您进行解析
+
+
+
+
+ 需要您解析的表达式
+
+
+
+
+ 解析后的内容
+
+
+
+
+ 实体类型
+
+
+
+
+ 实体配置
+
+
+
+
+ 索引配置
+
+
+
+
+ 实体类型
+
+
+
+
+ 实体的属性
+
+
+
+
+ 实体的属性配置
+
+
+
+
+ 标识符,可将 CurdBefore 与 CurdAfter 进行匹配
+
+
+
+
+ 操作类型
+
+
+
+
+ 实体类型
+
+
+
+
+ 实体类型的元数据
+
+
+
+
+ 执行的 SQL
+
+
+
+
+ 参数化命令
+
+
+
+
+ 发生的错误
+
+
+
+
+ 执行SQL命令,返回的结果
+
+
+
+
+ 耗时(单位:Ticks)
+
+
+
+
+ 耗时(单位:毫秒)
+
+
+
+
+ 标识符,可将 SyncStructureBeforeEventArgs 与 SyncStructureAfterEventArgs 进行匹配
+
+
+
+
+ 实体类型
+
+
+
+
+ 执行的 SQL
+
+
+
+
+ 发生的错误
+
+
+
+
+ 耗时(单位:Ticks)
+
+
+
+
+ 耗时(单位:毫秒)
+
+
+
+
+ 类型
+
+
+
+
+ 属性列的元数据
+
+
+
+
+ 反射的属性信息
+
+
+
+
+ 获取实体的属性值,也可以设置实体的属性新值
+
+
+
+
+ 【开发环境必备】自动同步实体结构到数据库,程序运行中检查实体表是否存在,然后创建或修改
+
+
+
+
+ 转小写同步结构
+
+
+
+
+ 转大写同步结构
+
+
+
+
+ 将数据库的主键、自增、索引设置导入,适用 DbFirst 模式,无须在实体类型上设置 [Column(IsPrimary)] 或者 ConfigEntity。此功能目前可用于 mysql/sqlserver/postgresql/oracle。
+ 本功能会影响 IFreeSql 首次访问的速度。
+ 若使用 CodeFirst 创建索引后,又直接在数据库上建了索引,若无本功能下一次 CodeFirst 迁移时数据库上创建的索引将被删除
+
+
+
+
+ 不使用命令参数化执行,针对 Insert/Update
@@ -2701,161 +2874,6 @@
-
-
- C#:从元组集合中查找 exp1, exp2 是否存在
- SQL:
- exp1 = that[0].Item1 and exp2 = that[0].Item2 OR
- exp1 = that[1].Item1 and exp2 = that[1].Item2 OR
- ...
- 注意:当 that 为 null 或 empty 时,返回 1=0
-
-
-
-
-
-
- 获取c#类型,int、long
-
-
-
-
-
-
- 获取c#类型对象
-
-
-
-
-
-
- 获取ado.net读取方法, GetBoolean、GetInt64
-
-
-
-
-
-
- 序列化
-
-
-
-
-
-
- 反序列化
-
-
-
-
-
-
- 获取数据库枚举类型,适用 PostgreSQL
-
-
-
-
-
-
- AsType, Ctor, ClearData 三处地方需要重新加载
-
-
-
-
- AsType, Ctor, ClearData 三处地方需要重新加载
-
-
-
-
- 通过属性的注释文本,通过 xml 读取
-
-
- Dict:key=属性名,value=注释
-
-
-
- 创建一个过滤器
-
-
- 名字
- 表达式
-
-
-
-
- 中间表,多对多
-
-
-
-
- 不进行任何处理
-
-
-
-
- 将帕斯卡命名字符串转换为下划线分隔字符串
-
- BigApple -> Big_Apple
-
-
-
-
- 将帕斯卡命名字符串转换为下划线分隔字符串,且转换为全大写
-
- BigApple -> BIG_APPLE
-
-
-
-
- 将帕斯卡命名字符串转换为下划线分隔字符串,且转换为全小写
-
- BigApple -> big_apple
-
-
-
-
- 将字符串转换为大写
-
- BigApple -> BIGAPPLE
-
-
-
-
- 将字符串转换为小写
-
- BigApple -> bigapple
-
-
-
-
- 将帕斯卡命名字符串转换为下划线分隔字符串
-
- BigApple -> Big_Apple
-
-
-
-
-
-
- C#: that >= between && that <= and
- SQL: that BETWEEN between AND and
-
-
-
-
-
-
-
-
- 注意:这个方法和 Between 有细微区别
- C#: that >= start && that < end
- SQL: that >= start and that < end
-
-
-
-
-
-
C#:从元组集合中查找 exp1, exp2 是否存在
diff --git a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerCodeFirst.cs b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerCodeFirst.cs
index 95f4b76d..b6eeddae 100644
--- a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerCodeFirst.cs
+++ b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerCodeFirst.cs
@@ -251,7 +251,7 @@ inner join sys.types b on b.user_type_id = a.user_type_id
left join sys.tables d on d.object_id = a.object_id
left join sys.schemas e on e.schema_id = d.schema_id
where a.object_id in (object_id(N'[{1}].[{2}]'));
-use " + database, tboldname ?? tbname);
+use [" + database + "];", tboldname ?? tbname);
var ds = _orm.Ado.ExecuteArray(CommandType.Text, sql);
var tbstruct = ds.ToDictionary(a => string.Concat(a[0]), a => new
{
@@ -303,7 +303,7 @@ from sys.index_columns a
inner join sys.indexes b on b.object_id = a.object_id and b.index_id = a.index_id
left join sys.columns c on c.object_id = a.object_id and c.column_id = a.column_id
where a.object_id in (object_id(N'[{1}].[{2}]')) and b.is_primary_key = 0;
-use " + database, tboldname ?? tbname);
+use [" + database + "];", tboldname ?? tbname);
var dsuk = _orm.Ado.ExecuteArray(CommandType.Text, dsuksql).Select(a => new[] { string.Concat(a[0]), string.Concat(a[1]), string.Concat(a[2]), string.Concat(a[3]) });
foreach (var uk in tb.Indexes)
{
diff --git a/Providers/FreeSql.Provider.SqlServer/SqlServerCodeFirst.cs b/Providers/FreeSql.Provider.SqlServer/SqlServerCodeFirst.cs
index 86927f95..6276be91 100644
--- a/Providers/FreeSql.Provider.SqlServer/SqlServerCodeFirst.cs
+++ b/Providers/FreeSql.Provider.SqlServer/SqlServerCodeFirst.cs
@@ -250,7 +250,7 @@ inner join sys.types b on b.user_type_id = a.user_type_id
left join sys.tables d on d.object_id = a.object_id
left join sys.schemas e on e.schema_id = d.schema_id
where a.object_id in (object_id(N'[{1}].[{2}]'));
-use " + database, tboldname ?? tbname);
+use [" + database + "];", tboldname ?? tbname);
var ds = _orm.Ado.ExecuteArray(CommandType.Text, sql);
var tbstruct = ds.ToDictionary(a => string.Concat(a[0]), a => new
{
@@ -302,7 +302,7 @@ from sys.index_columns a
inner join sys.indexes b on b.object_id = a.object_id and b.index_id = a.index_id
left join sys.columns c on c.object_id = a.object_id and c.column_id = a.column_id
where a.object_id in (object_id(N'[{1}].[{2}]')) and b.is_primary_key = 0;
-use " + database, tboldname ?? tbname);
+use [" + database + "];", tboldname ?? tbname);
var dsuk = _orm.Ado.ExecuteArray(CommandType.Text, dsuksql).Select(a => new[] { string.Concat(a[0]), string.Concat(a[1]), string.Concat(a[2]), string.Concat(a[3]) });
foreach (var uk in tb.Indexes)
{