From 161aadb045891ef70c4d9deb6d7d4d19c96515ee Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sun, 10 Feb 2019 18:58:39 +0800 Subject: [PATCH] Update CodeFirst --- .../CodeFirstProvider/CodeFirstProvider.cs | 15 +++++++++++++-- .../SqliteTest/DataBase/SqlSugar4xTest.sqlite | Bin 475136 -> 475136 bytes 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs index a177abcf9..8a0c199e6 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs @@ -136,6 +136,9 @@ namespace SqlSugar .ToList(); + var isMultiplePrimaryKey = dbColumns.Where(it => it.IsPrimarykey).Count() > 1|| entityColumns.Where(it => it.IsPrimarykey).Count() > 1; + + var isChange = false; foreach (var item in addColumns) { @@ -164,7 +167,7 @@ namespace SqlSugar if (dbColumn == null) continue; bool pkDiff, idEntityDiff; KeyAction(item, dbColumn, out pkDiff, out idEntityDiff); - if (dbColumn != null && pkDiff && !idEntityDiff) + if (dbColumn != null && pkDiff && !idEntityDiff&& isMultiplePrimaryKey==false) { var isAdd = item.IsPrimarykey; if (isAdd) @@ -176,11 +179,19 @@ namespace SqlSugar this.Context.DbMaintenance.DropConstraint(tableName, string.Format("PK_{0}_{1}", tableName, item.DbColumnName)); } } - else if (pkDiff || idEntityDiff) + else if ((pkDiff || idEntityDiff)&& isMultiplePrimaryKey==false) { ChangeKey(entityInfo, tableName, item); } } + if (isMultiplePrimaryKey) { + var oldPkNames = dbColumns.Where(it => it.IsPrimarykey).Select(it => it.DbColumnName.ToLower()).ToList(); + var newPkNames = entityColumns.Where(it => it.IsPrimarykey).Select(it => it.DbColumnName.ToLower()).ToList(); + if (oldPkNames.Union(newPkNames).Count() != oldPkNames.Count) { + Check.Exception(true, ErrorMessage.GetThrowMessage("Modification of multiple primary key tables is not supported. Delete tables while creating", "不支持修改多主键表,请删除表在创建")); + } + + } if (isChange && IsBackupTable) { this.Context.DbMaintenance.BackupTable(tableName, tableName + DateTime.Now.ToString("yyyyMMddHHmmss"), MaxBackupDataRows); diff --git a/Src/Asp.Net/SqliteTest/DataBase/SqlSugar4xTest.sqlite b/Src/Asp.Net/SqliteTest/DataBase/SqlSugar4xTest.sqlite index 66f06136bc5e0e2111c3b05b930dc78e35fed95f..bcf3f6cf176dce2ac81d6bb6f26aa76c597e67c3 100644 GIT binary patch delta 33484 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 delta 30030 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 t%2yVz9JuYrE8W+%?rYtBv0r