From bade65a752e76b12a8276cbf5d17342ce30587c1 Mon Sep 17 00:00:00 2001 From: tomato2313 <1351318388@qq.com> Date: Tue, 12 Apr 2022 08:48:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20sqlite=20codefirst=20?= =?UTF-8?q?=E5=AF=B9=E5=A4=9A=E4=B8=BB=E9=94=AE=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sqlite/CodeFirst/SqliteCodeFirst.cs | 2 +- .../DbMaintenance/SqliteDbMaintenance.cs | 21 ++++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/CodeFirst/SqliteCodeFirst.cs b/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/CodeFirst/SqliteCodeFirst.cs index 61f967d2c..c4cd68c62 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/CodeFirst/SqliteCodeFirst.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/CodeFirst/SqliteCodeFirst.cs @@ -91,7 +91,7 @@ namespace SqlSugar { var tableName = GetTableName(entityInfo); string backupName=tableName+DateTime.Now.ToString("yyyyMMddHHmmss"); - Check.Exception(entityInfo.Columns.Where(it => it.IsPrimarykey).Count() > 1, "Use Code First ,The primary key must not exceed 1"); + //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.HasValue()) { diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/DbMaintenance/SqliteDbMaintenance.cs b/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/DbMaintenance/SqliteDbMaintenance.cs index 28be9104e..5b9c0b242 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/DbMaintenance/SqliteDbMaintenance.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/DbMaintenance/SqliteDbMaintenance.cs @@ -84,7 +84,7 @@ namespace SqlSugar { get { - return "CREATE TABLE {0}(\r\n{1} )"; + return "CREATE TABLE {0}(\r\n{1} $PrimaryKey )"; } } protected override string CreateTableColumn @@ -234,9 +234,9 @@ namespace SqlSugar } } - protected override string CreateIndexSql + protected override string CreateIndexSql { - get + get { return "CREATE {3} INDEX Index_{0}_{2} ON {0}({1})"; } @@ -362,7 +362,7 @@ namespace SqlSugar { return true; } - + public override bool BackupTable(string oldTableName, string newTableName, int maxBackupDataRows = int.MaxValue) { @@ -390,10 +390,21 @@ namespace SqlSugar } } string sql = GetCreateTableSql(tableName, columns); - if (!isCreatePrimaryKey) + string primaryKeyInfo = null; + + if (!isCreatePrimaryKey || columns.Count(it => it.IsPrimarykey) > 1) { sql = sql.Replace("PRIMARY KEY AUTOINCREMENT", "").Replace("PRIMARY KEY", ""); } + + if (columns.Count(it => it.IsPrimarykey) > 1 && isCreatePrimaryKey) + { + primaryKeyInfo = string.Format(",\r\n Primary key({0})", string.Join(",", columns.Where(it => it.IsPrimarykey).Select(it => this.SqlBuilder.GetTranslationColumnName(it.DbColumnName)))); + primaryKeyInfo = primaryKeyInfo.Replace("`", "\""); + } + + sql = sql.Replace("$PrimaryKey", primaryKeyInfo); + this.Context.Ado.ExecuteCommand(sql); return true; }