From 04aa6645c66004acac4fc17cde8d69c8f3d839f6 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sat, 8 Jul 2017 18:20:02 +0800 Subject: [PATCH] Add Sqlite --- .../SqlSugar/Lib/System.Data.SQLite.dll | Bin 0 -> 309760 bytes .../Sqlite/CodeFirst/SqliteCodeFirst.cs | 67 +++++ .../Realization/Sqlite/DbBind/SqliteDbBind.cs | 79 ++++++ .../Sqlite/DbFirst/SqliteDbFirst.cs | 11 + .../DbMaintenance/SqliteDbMaintenance.cs | 236 ++++++++++++++++++ .../SqlSugar/Realization/Sqlite/DbType.cs | 12 + .../Sqlite/Queryable/SqliteQueryable.cs | 38 +++ .../Sqlite/SqlBuilder/SqliteBuilder.cs | 46 ++++ .../Sqlite/SqlBuilder/SqliteDeleteBuilder.cs | 7 + .../SqlBuilder/SqliteExpressionContext.cs | 59 +++++ .../Sqlite/SqlBuilder/SqliteInsertBuilder.cs | 27 ++ .../Sqlite/SqlBuilder/SqliteQueryBuilder.cs | 86 +++++++ .../Sqlite/SqlBuilder/SqliteUpdateBuilder.cs | 91 +++++++ .../Realization/Sqlite/SqliteProvider.cs | 104 ++++++++ Src/Asp.Net/SqlSugar/SqlSugar.csproj | 19 +- 15 files changed, 881 insertions(+), 1 deletion(-) create mode 100644 Src/Asp.Net/SqlSugar/Lib/System.Data.SQLite.dll create mode 100644 Src/Asp.Net/SqlSugar/Realization/Sqlite/CodeFirst/SqliteCodeFirst.cs create mode 100644 Src/Asp.Net/SqlSugar/Realization/Sqlite/DbBind/SqliteDbBind.cs create mode 100644 Src/Asp.Net/SqlSugar/Realization/Sqlite/DbFirst/SqliteDbFirst.cs create mode 100644 Src/Asp.Net/SqlSugar/Realization/Sqlite/DbMaintenance/SqliteDbMaintenance.cs create mode 100644 Src/Asp.Net/SqlSugar/Realization/Sqlite/DbType.cs create mode 100644 Src/Asp.Net/SqlSugar/Realization/Sqlite/Queryable/SqliteQueryable.cs create mode 100644 Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteBuilder.cs create mode 100644 Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteDeleteBuilder.cs create mode 100644 Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs create mode 100644 Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteInsertBuilder.cs create mode 100644 Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteQueryBuilder.cs create mode 100644 Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteUpdateBuilder.cs create mode 100644 Src/Asp.Net/SqlSugar/Realization/Sqlite/SqliteProvider.cs diff --git a/Src/Asp.Net/SqlSugar/Lib/System.Data.SQLite.dll b/Src/Asp.Net/SqlSugar/Lib/System.Data.SQLite.dll new file mode 100644 index 0000000000000000000000000000000000000000..ecc1c11b9ea946666629e5c23157ecff8d707fa4 GIT binary patch literal 309760 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

uh|mE^MkBeq;dn# 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 axsO=yVfcqF@U9t9CVQaOI}HDy1%3j~z^0o3 literal 0 HcmV?d00001 diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/CodeFirst/SqliteCodeFirst.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/CodeFirst/SqliteCodeFirst.cs new file mode 100644 index 000000000..74c5aa1f8 --- /dev/null +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/CodeFirst/SqliteCodeFirst.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SqlSugar +{ + public class SqliteCodeFirst : CodeFirstProvider + { + public override void NoExistLogic(EntityInfo entityInfo) + { + var tableName = GetTableName(entityInfo); + Check.Exception(entityInfo.Columns.Where(it => it.IsPrimarykey).Count() > 1, "Use Code First ,The primary key must not exceed 1"); + List columns = new List(); + if (entityInfo.Columns.IsValuable()) + { + foreach (var item in entityInfo.Columns) + { + DbColumnInfo dbColumnInfo = this.EntityColumnToDbColumn(entityInfo, tableName, item); + columns.Add(dbColumnInfo); + } + } + this.Context.DbMaintenance.CreateTable(tableName, columns); + } + protected override DbColumnInfo EntityColumnToDbColumn(EntityInfo entityInfo, string tableName, EntityColumnInfo item) + { + var result = new DbColumnInfo() + { + DataType = this.Context.Ado.DbBind.GetDbTypeName(PubMethod.GetUnderType(item.PropertyInfo).Name), + TableId = entityInfo.Columns.IndexOf(item), + DbColumnName = item.DbColumnName.IsValuable() ? item.DbColumnName : item.PropertyName, + IsPrimarykey = item.IsPrimarykey, + IsIdentity = item.IsIdentity, + TableName = tableName, + IsNullable = item.IsNullable, + DefaultValue = item.DefaultValue, + ColumnDescription = item.ColumnDescription, + Length = item.Length + }; + if (result.DataType.Equals("varchar", StringComparison.CurrentCultureIgnoreCase) && result.Length == 0) + { + result.Length = 1; + } + return result; + } + + protected override void ConvertColumns(List dbColumns) + { + foreach (var item in dbColumns) + { + if (item.DataType == "DateTime") + { + item.Length = 0; + } + } + } + + protected override void ChangeKey(EntityInfo entityInfo, string tableName, EntityColumnInfo item) + { + this.Context.DbMaintenance.UpdateColumn(tableName, EntityColumnToDbColumn(entityInfo, tableName, item)); + if (!item.IsPrimarykey) + this.Context.DbMaintenance.DropConstraint(tableName,null); + if (item.IsPrimarykey) + this.Context.DbMaintenance.AddPrimaryKey(tableName, item.DbColumnName); + } + } +} diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbBind/SqliteDbBind.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbBind/SqliteDbBind.cs new file mode 100644 index 000000000..ff535c8f0 --- /dev/null +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbBind/SqliteDbBind.cs @@ -0,0 +1,79 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace SqlSugar +{ + public class SqliteDbBind : DbBindProvider + { + public override string GetDbTypeName(string csharpTypeName) + { + if (csharpTypeName == PubConst.ByteArrayType.Name) + { + return "blob"; + } + if (csharpTypeName == "Int32") + csharpTypeName = "int"; + if (csharpTypeName == "Int16") + csharpTypeName = "short"; + if (csharpTypeName == "Int64") + csharpTypeName = "long"; + if (csharpTypeName == "Boolean") + csharpTypeName = "bool"; + var mappings = this.MappingTypes.Where(it => it.Value.ToString().Equals(csharpTypeName, StringComparison.CurrentCultureIgnoreCase)); + return mappings.IsValuable() ? mappings.First().Key : "varchar"; + } + public override List> MappingTypes + { + get + { + return new List>() + { + + new KeyValuePair("int",CSharpDataType.@int), + new KeyValuePair("mediumint",CSharpDataType.@int), + new KeyValuePair("integer",CSharpDataType.@int), + + new KeyValuePair("varchar",CSharpDataType.@string), + new KeyValuePair("text",CSharpDataType.@string), + new KeyValuePair("char",CSharpDataType.@string), + new KeyValuePair("enum",CSharpDataType.@string), + + new KeyValuePair("tinyint",CSharpDataType.@byte), + new KeyValuePair("smallint",CSharpDataType.@short), + new KeyValuePair("bigint",CSharpDataType.@long), + new KeyValuePair("bit",CSharpDataType.@bool), + new KeyValuePair("real",CSharpDataType.@double), + new KeyValuePair("double",CSharpDataType.@double), + new KeyValuePair("float",CSharpDataType.@float), + new KeyValuePair("decimal",CSharpDataType.@decimal), + new KeyValuePair("numeric",CSharpDataType.@decimal), + new KeyValuePair("year",CSharpDataType.@int), + + new KeyValuePair("datetime",CSharpDataType.DateTime), + new KeyValuePair("timestamp",CSharpDataType.DateTime), + new KeyValuePair("date",CSharpDataType.DateTime), + new KeyValuePair("time",CSharpDataType.DateTime), + + new KeyValuePair("blob",CSharpDataType.byteArray), + new KeyValuePair("tinyblob",CSharpDataType.byteArray), + new KeyValuePair("varbinary",CSharpDataType.byteArray), + new KeyValuePair("binary",CSharpDataType.byteArray), + new KeyValuePair("multipoint",CSharpDataType.byteArray), + new KeyValuePair("geometry",CSharpDataType.byteArray), + new KeyValuePair("multilinestring",CSharpDataType.byteArray), + new KeyValuePair("polygon",CSharpDataType.byteArray), + + new KeyValuePair("varchar",CSharpDataType.Guid), + }; + } + } + public override List StringThrow + { + get + { + return new List() { "int32", "datetime", "decimal", "double", "byte"}; + } + } + } +} diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbFirst/SqliteDbFirst.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbFirst/SqliteDbFirst.cs new file mode 100644 index 000000000..cb378dc23 --- /dev/null +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbFirst/SqliteDbFirst.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SqlSugar +{ + public class SqliteDbFirst : DbFirstProvider + { + } +} diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbMaintenance/SqliteDbMaintenance.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbMaintenance/SqliteDbMaintenance.cs new file mode 100644 index 000000000..ecb6ba18f --- /dev/null +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbMaintenance/SqliteDbMaintenance.cs @@ -0,0 +1,236 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SqlSugar +{ + public class SqliteDbMaintenance : DbMaintenanceProvider + { + #region DML + protected override string GetColumnInfosByTableNameSql + { + get + { + string sql = @"SELECT + 0 as TableId, + TABLE_NAME as TableName, + column_name AS DbColumnName, + CASE WHEN left(COLUMN_TYPE,LOCATE('(',COLUMN_TYPE)-1)='' THEN COLUMN_TYPE ELSE left(COLUMN_TYPE,LOCATE('(',COLUMN_TYPE)-1) END AS DataType, + CAST(SUBSTRING(COLUMN_TYPE,LOCATE('(',COLUMN_TYPE)+1,LOCATE(')',COLUMN_TYPE)-LOCATE('(',COLUMN_TYPE)-1) AS signed) AS Length, + column_default AS `DefaultValue`, + column_comment AS `ColumnDescription`, + CASE WHEN COLUMN_KEY = 'PRI' + THEN true ELSE false END AS `IsPrimaryKey`, + CASE WHEN EXTRA='auto_increment' THEN true ELSE false END as IsIdentity, + CASE WHEN is_nullable = 'YES' + THEN true ELSE false END AS `IsNullable` + FROM + Information_schema.columns where TABLE_NAME='{0}' and TABLE_SCHEMA=(select database()) ORDER BY TABLE_NAME"; + return sql; + } + } + protected override string GetTableInfoListSql + { + get + { + return @"select TABLE_NAME as Name,TABLE_COMMENT as Description from information_schema.tables + where TABLE_SCHEMA=(select database()) AND TABLE_TYPE='BASE TABLE'"; + } + } + protected override string GetViewInfoListSql + { + get + { + return @"select TABLE_NAME as Name,TABLE_COMMENT as Description from information_schema.tables + where TABLE_SCHEMA=(select database()) AND TABLE_TYPE='VIEW' + "; + } + } + #endregion + + #region DDL + protected override string AddPrimaryKeySql + { + get + { + return "ALTER TABLE {0} ADD PRIMARY KEY({2}) /*{1}*/"; + } + } + protected override string AddColumnToTableSql + { + get + { + return "ALTER TABLE {0} ADD {1} {2}{3} {4} {5} {6}"; + } + } + protected override string AlterColumnToTableSql + { + get + { + // return "ALTER TABLE {0} ALTER COLUMN {1} {2}{3} {4} {5} {6}"; + return "alter table {0} change column {1} {1} {2}{3} {4} {5} {6}"; + } + } + protected override string BackupDataBaseSql + { + get + { + return "mysqldump.exe {0} -uroot -p > {1} "; + } + } + protected override string CreateTableSql + { + get + { + return "CREATE TABLE {0}(\r\n{1} $PrimaryKey)"; + } + } + protected override string CreateTableColumn + { + get + { + return "{0} {1}{2} {3} {4} {5}"; + } + } + protected override string TruncateTableSql + { + get + { + return "TRUNCATE TABLE {0}"; + } + } + protected override string BackupTableSql + { + get + { + return "SELECT * INTO {1} FROM {2} limit 0,{0}"; + } + } + protected override string DropTableSql + { + get + { + return "DROP TABLE {0}"; + } + } + protected override string DropColumnToTableSql + { + get + { + return "ALTER TABLE {0} DROP COLUMN {1}"; + } + } + protected override string DropConstraintSql + { + get + { + return "ALTER TABLE {0} drop primary key;"; + } + } + protected override string RenameColumnSql + { + get + { + return "exec sp_rename '{0}.{1}','{2}','column';"; + } + } + #endregion + + #region Check + protected override string CheckSystemTablePermissionsSql + { + get + { + return "select 1 from Information_schema.columns limit 0,1"; + } + } + #endregion + + #region Scattered + protected override string CreateTableNull + { + get + { + return "DEFAULT NULL"; + } + } + protected override string CreateTableNotNull + { + get + { + return "NOT NULL"; + } + } + protected override string CreateTablePirmaryKey + { + get + { + return "PRIMARY KEY"; + } + } + protected override string CreateTableIdentity + { + get + { + return "AUTO_INCREMENT"; + } + } + #endregion + + #region Methods + public override bool CreateTable(string tableName, List columns) + { + if (columns.IsValuable()) + { + foreach (var item in columns) + { + if (item.DbColumnName.Equals("GUID",StringComparison.CurrentCultureIgnoreCase)) + { + item.Length = 10; + } + } + } + string sql = GetCreateTableSql(tableName, columns); + string primaryKeyInfo = null; + if (columns.Any(it => it.IsIdentity)) { + primaryKeyInfo =string.Format( ", Primary key({0})",string.Join(",",columns.Where(it=>it.IsIdentity).Select(it=>this.SqlBuilder.GetTranslationColumnName(it.DbColumnName)))); + + } + sql = sql.Replace("$PrimaryKey", primaryKeyInfo); + this.Context.Ado.ExecuteCommand(sql); + return true; + } + protected override string GetCreateTableSql(string tableName, List columns) + { + List columnArray = new List(); + Check.Exception(columns.IsNullOrEmpty(), "No columns found "); + foreach (var item in columns) + { + string columnName = item.DbColumnName; + string dataType = item.DataType; + if (dataType == "varchar"&& item.Length==0) { + item.Length = 1; + } + string dataSize = item.Length > 0 ? string.Format("({0})", item.Length) : null; + string nullType = item.IsNullable ? this.CreateTableNull : CreateTableNotNull; + string primaryKey = null; + string identity = item.IsIdentity ? this.CreateTableIdentity : null; + string addItem = string.Format(this.CreateTableColumn, this.SqlBuilder.GetTranslationColumnName(columnName), dataType, dataSize, nullType, primaryKey, identity); + columnArray.Add(addItem); + } + string tableString = string.Format(this.CreateTableSql, this.SqlBuilder.GetTranslationTableName(tableName), string.Join(",\r\n", columnArray)); + return tableString; + } + public override bool IsAnyConstraint(string constraintName) + { + throw new NotSupportedException("MySql IsAnyConstraint NotSupportedException"); + } + public override bool BackupDataBase(string databaseName, string fullFileName) + { + Check.ThrowNotSupportedException("MySql BackupDataBase NotSupported"); + return false; + } + #endregion + } +} diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbType.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbType.cs new file mode 100644 index 000000000..cecb3c341 --- /dev/null +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbType.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SqlSugar +{ + public partial class DbType + { + public const string Sqlite = "Sqlite"; + } +} diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/Queryable/SqliteQueryable.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/Queryable/SqliteQueryable.cs new file mode 100644 index 000000000..d81ef67eb --- /dev/null +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/Queryable/SqliteQueryable.cs @@ -0,0 +1,38 @@ +namespace SqlSugar +{ + public class SqliteQueryable:QueryableProvider + { + public override ISugarQueryable With(string withString) + { + return this; + } + } + public class SqliteQueryable : QueryableProvider + { + + } + public class SqliteQueryable : QueryableProvider + { + + } + public class SqliteQueryable : QueryableProvider + { + + } + public class SqliteQueryable : QueryableProvider + { + + } + public class SqliteQueryable : QueryableProvider + { + + } + public class SqliteQueryable : QueryableProvider + { + + } + public class SqliteQueryable : QueryableProvider + { + + } +} diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteBuilder.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteBuilder.cs new file mode 100644 index 000000000..948f16e70 --- /dev/null +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteBuilder.cs @@ -0,0 +1,46 @@ +using System; +using System.Linq; +using System.Text.RegularExpressions; + +namespace SqlSugar +{ + public class SqliteBuilder : SqlBuilderProvider + { + + public override string GetTranslationTableName(string name) + { + if (name.Contains("`")) return name; + Check.ArgumentNullException(name, string.Format(ErrorMessage.ObjNotExist, "Table Name")); + var context = this.Context; + var mappingInfo = context + .MappingTables + .FirstOrDefault(it => it.EntityName.Equals(name, StringComparison.CurrentCultureIgnoreCase)); + return "`" + (mappingInfo == null ? name : mappingInfo.DbTableName) + "`"; + } + public override string GetTranslationColumnName(string entityName, string propertyName) + { + Check.ArgumentNullException(entityName, string.Format(ErrorMessage.ObjNotExist, "Table Name")); + Check.ArgumentNullException(propertyName, string.Format(ErrorMessage.ObjNotExist, "Column Name")); + var context = this.Context; + var mappingInfo = context + .MappingColumns + .FirstOrDefault(it => + it.EntityName.Equals(entityName, StringComparison.CurrentCultureIgnoreCase) && + it.PropertyName.Equals(propertyName, StringComparison.CurrentCultureIgnoreCase)); + return (mappingInfo == null ? "`" + propertyName + "`" : "`" + mappingInfo.DbColumnName + "`"); + } + + public override string GetTranslationColumnName(string propertyName) + { + if (propertyName.Contains("`")) return propertyName; + else + return "`" + propertyName + "`"; + } + + public override string GetNoTranslationColumnName(string name) + { + if (!name.Contains("`")) return name; + return name == null ? string.Empty : Regex.Match(name, @"\`(.*?)\`").Groups[1].Value; + } + } +} diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteDeleteBuilder.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteDeleteBuilder.cs new file mode 100644 index 000000000..97189bcab --- /dev/null +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteDeleteBuilder.cs @@ -0,0 +1,7 @@ +namespace SqlSugar +{ + public class MySqlDeleteBuilder : DeleteBuilder + { + + } +} diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs new file mode 100644 index 000000000..18a37a342 --- /dev/null +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs @@ -0,0 +1,59 @@ +using System; +using System.Linq; +namespace SqlSugar +{ + public class SqliteExpressionContext : ExpressionContext, ILambdaExpressions + { + public SqlSugarClient Context { get; set; } + public SqliteExpressionContext() + { + base.DbMehtods = new SqliteMethod(); + } + public override string GetTranslationTableName(string entityName, bool isMapping = true) + { + Check.ArgumentNullException(entityName, string.Format(ErrorMessage.ObjNotExist, "Table Name")); + if (IsTranslationText(entityName)) return entityName; + if (isMapping && this.MappingTables.IsValuable()) + { + if (entityName.Contains(".")) + { + var columnInfo = entityName.Split('.'); + var mappingInfo = this.MappingTables.FirstOrDefault(it => it.EntityName.Equals(columnInfo.Last(), StringComparison.CurrentCultureIgnoreCase)); + if (mappingInfo != null) + { + columnInfo[columnInfo.Length - 1] = mappingInfo.EntityName; + } + return string.Join(".", columnInfo.Select(it => GetTranslationText(it))); + } + else + { + var mappingInfo = this.MappingTables.FirstOrDefault(it => it.EntityName.Equals(entityName, StringComparison.CurrentCultureIgnoreCase)); + return "`" + (mappingInfo == null ? entityName : mappingInfo.EntityName) + "`"; + } + } + else + { + if (entityName.Contains(".")) + { + return string.Join(".", entityName.Split('.').Select(it => GetTranslationText(it))); + } + else + { + return GetTranslationText(entityName); + } + } + } + public override bool IsTranslationText(string name) + { + return name.Contains("`") && name.Contains("`"); + } + public override string GetTranslationText(string name) + { + return "`" + name + "`"; + } + } + public class SqliteMethod : DefaultDbMethod, IDbMethods + { + + } +} diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteInsertBuilder.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteInsertBuilder.cs new file mode 100644 index 000000000..6cffeb242 --- /dev/null +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteInsertBuilder.cs @@ -0,0 +1,27 @@ +namespace SqlSugar +{ + public class SqliteInsertBuilder : InsertBuilder + { + public override string SqlTemplate + { + get + { + if (IsReturnIdentity) + { + return @"INSERT INTO {0} + ({1}) + VALUES + ({2}) ;SELECT LAST_INSERT_ID();"; + } + else + { + return @"INSERT INTO {0} + ({1}) + VALUES + ({2}) ;"; + + } + } + } + } +} diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteQueryBuilder.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteQueryBuilder.cs new file mode 100644 index 000000000..bdddfa2e7 --- /dev/null +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteQueryBuilder.cs @@ -0,0 +1,86 @@ +using System.Linq; +using System.Text; + +namespace SqlSugar +{ + public partial class SqliteQueryBuilder : QueryBuilder + { + #region Sql Template + public override string PageTempalte + { + get + { + /* + SELECT * FROM TABLE WHERE CONDITION ORDER BY ID DESC LIMIT 0,10 + */ + var template = "SELECT {0} FROM {1} {2} {3} {4} LIMIT {5},{6}"; + return template; + } + } + public override string DefaultOrderByTemplate + { + get + { + return "ORDER BY NOW() "; + } + } + + #endregion + + #region Common Methods + + public override string ToSqlString() + { + sql = new StringBuilder(); + sql.AppendFormat(SqlTemplate, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, (Skip != null || Take != null) ? null : GetOrderByString); + if (IsCount) { return sql.ToString(); } + if (Skip != null && Take == null) + { + if (this.OrderByValue == "ORDER BY ") this.OrderByValue += GetSelectValue.Split(',')[0]; + return string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, (Skip != null || Take != null) ? null : GetOrderByString, Skip.ObjToInt(), long.MaxValue); + } + else if (Skip == null && Take != null) + { + if (this.OrderByValue == "ORDER BY ") this.OrderByValue += GetSelectValue.Split(',')[0]; + return string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, GetOrderByString, 1, Take.ObjToInt()); + } + else if (Skip != null && Take != null) + { + if (this.OrderByValue == "ORDER BY ") this.OrderByValue += GetSelectValue.Split(',')[0]; + return string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, GetOrderByString, Skip.ObjToInt() > 0 ? Skip.ObjToInt(): 0, Take); + } + else + { + return sql.ToString(); + } + + } + + #endregion + + #region Get SQL Partial + public override string GetSelectValue + { + get + { + if (this.IsCount) return "COUNT(1) AS `Count` "; + string reval = string.Empty; + if (this.SelectValue == null || this.SelectValue is string) + { + reval = GetSelectValueByString(); + } + else + { + reval = GetSelectValueByExpression(); + } + if (this.SelectType == ResolveExpressType.SelectMultiple) + { + this.SelectCacheKey = this.SelectCacheKey + string.Join("-", this.JoinQueryInfos.Select(it => it.TableName)); + } + return reval; + } + } + + #endregion + } +} diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteUpdateBuilder.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteUpdateBuilder.cs new file mode 100644 index 000000000..359aa5351 --- /dev/null +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteUpdateBuilder.cs @@ -0,0 +1,91 @@ +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SqlSugar +{ + public class SqliteUpdateBuilder : UpdateBuilder + { + public override string SqlTemplateBatch + { + get + { + return @"UPDATE {1} S {2} INNER JOIN ${{0}} SET {0} "; + } + } + public override string SqlTemplateJoin + { + get + { + return @" ( + {0} + + ) T ON {1} + "; + } + } + protected override string TomultipleSqlString(List> groupList) + { + Check.Exception(PrimaryKeys == null || PrimaryKeys.Count == 0, " Update List need Primary key"); + int pageSize = 200; + int pageIndex = 1; + int totalRecord = groupList.Count; + int pageCount = (totalRecord + pageSize - 1) / pageSize; + StringBuilder batchUpdateSql = new StringBuilder(); + while (pageCount >= pageIndex) + { + StringBuilder updateTable = new StringBuilder(); + string setValues = string.Join(",", groupList.First().Where(it => it.IsPrimarykey == false && (it.IsIdentity == false || (IsOffIdentity && it.IsIdentity))).Select(it => + { + if (SetValues.IsValuable()) + { + var setValue = SetValues.Where(sv => sv.Key == Builder.GetTranslationColumnName(it.DbColumnName)); + if (setValue != null && setValue.Any()) + { + return setValue.First().Value; + } + } + var result = string.Format("S.{0}=T.{0}", Builder.GetTranslationColumnName(it.DbColumnName)); + return result; + })); + batchUpdateSql.AppendFormat(SqlTemplateBatch.ToString(), setValues, GetTableNameStringNoWith, TableWithString); + int i = 0; + foreach (var columns in groupList.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList()) + { + var isFirst = i == 0; + if (!isFirst) + { + updateTable.Append(SqlTemplateBatchUnion); + } + updateTable.Append("\r\n SELECT " + string.Join(",", columns.Select(it => string.Format(SqlTemplateBatchSelect, FormatValue(it.Value), it.DbColumnName)))); + ++i; + } + pageIndex++; + updateTable.Append("\r\n"); + string whereString = null; + if (this.WhereValues.IsValuable()) + { + foreach (var item in WhereValues) + { + var isFirst = whereString == null; + whereString += (isFirst ? null : " AND "); + whereString += item; + } + } + else if (PrimaryKeys.IsValuable()) + { + foreach (var item in PrimaryKeys) + { + var isFirst = whereString == null; + whereString += (isFirst ? null : " AND "); + whereString += string.Format("S.{0}=T.{0}", Builder.GetTranslationColumnName(item)); + } + } + var format= string.Format(SqlTemplateJoin, updateTable, whereString); + batchUpdateSql.Replace("${0}",format); + batchUpdateSql.Append(";"); + } + return batchUpdateSql.ToString(); + } + } +} diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqliteProvider.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqliteProvider.cs new file mode 100644 index 000000000..22c3de683 --- /dev/null +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqliteProvider.cs @@ -0,0 +1,104 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Data.SQLite; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +namespace SqlSugar +{ + public class SqliteProvider : AdoProvider + { + public SqliteProvider() { } + public override IDbConnection Connection + { + get + { + if (base._DbConnection == null) + { + var SQLiteConnectionString = base.Context.CurrentConnectionConfig.ConnectionString; + if (!SQLiteConnectionString.ToLower().Contains("charset")) + { + SQLiteConnectionString=SQLiteConnectionString.Trim().TrimEnd(';') + ";charset=utf8;"; + } + base._DbConnection = new SQLiteConnection(SQLiteConnectionString); + } + return base._DbConnection; + } + set + { + base._DbConnection = value; + } + } + + public override void BeginTran(string transactionName) + { + ((SQLiteConnection)this.Connection).BeginTransaction(); + } + ///

+ /// Only SqlServer + /// + /// + /// + public override void BeginTran(IsolationLevel iso, string transactionName) + { + ((SQLiteConnection)this.Connection).BeginTransaction(iso); + } + public override IDataAdapter GetAdapter() + { + return new SQLiteDataAdapter(); + } + public override IDbCommand GetCommand(string sql, SugarParameter[] parameters) + { + SQLiteCommand sqlCommand = new SQLiteCommand(sql, (SQLiteConnection)this.Connection); + sqlCommand.CommandType = this.CommandType; + sqlCommand.CommandTimeout = this.CommandTimeOut; + if (this.Transaction != null) + { + sqlCommand.Transaction = (SQLiteTransaction)this.Transaction; + } + if (parameters.IsValuable()) + { + IDataParameter[] ipars = ToIDbDataParameter(parameters); + sqlCommand.Parameters.AddRange((SQLiteParameter[])ipars); + } + CheckConnection(); + return sqlCommand; + } + public override void SetCommandToAdapter(IDataAdapter dataAdapter, IDbCommand command) + { + ((SQLiteDataAdapter)dataAdapter).SelectCommand = (SQLiteCommand)command; + } + /// + /// if SQLite return SQLiteParameter[] pars + /// if sqlerver return SqlParameter[] pars ... + /// + /// + /// + public override IDataParameter[] ToIDbDataParameter(params SugarParameter[] parameters) + { + if (parameters == null || parameters.Length == 0) return null; + SQLiteParameter[] result = new SQLiteParameter[parameters.Length]; + int index = 0; + foreach (var parameter in parameters) + { + if (parameter.Value == null) parameter.Value = DBNull.Value; + var sqlParameter = new SQLiteParameter(); + sqlParameter.ParameterName = parameter.ParameterName; + sqlParameter.Size = parameter.Size; + sqlParameter.Value = parameter.Value; + sqlParameter.DbType = parameter.DbType; + sqlParameter.Direction = parameter.Direction; + result[index] = sqlParameter; + if (sqlParameter.Direction == ParameterDirection.Output) { + if (this.OutputParameters == null) this.OutputParameters = new List(); + this.OutputParameters.RemoveAll(it => it.ParameterName == sqlParameter.ParameterName); + this.OutputParameters.Add(sqlParameter); + } + ++index; + } + return result; + } + } +} diff --git a/Src/Asp.Net/SqlSugar/SqlSugar.csproj b/Src/Asp.Net/SqlSugar/SqlSugar.csproj index 84b6d58fa..6033bfd41 100644 --- a/Src/Asp.Net/SqlSugar/SqlSugar.csproj +++ b/Src/Asp.Net/SqlSugar/SqlSugar.csproj @@ -41,6 +41,10 @@ + + False + Lib\System.Data.SQLite.dll + @@ -67,6 +71,19 @@ + + + + + + + + + + + + + @@ -192,10 +209,10 @@ + -