From 2ae4d138ecc4092fa444c426054b6dead7cec786 Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Fri, 4 Nov 2022 21:36:42 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20Sqlite=20Attachs=20?= =?UTF-8?q?=E5=A4=9A=E5=BA=93=E7=B4=A2=E5=BC=95=20{tablename}=20=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Examples/base_entity/Program.cs | 18 ++++++++++++++++++ .../FreeSql.Provider.Sqlite/SqliteCodeFirst.cs | 6 +++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs index 2b8be9af..4ca086f5 100644 --- a/Examples/base_entity/Program.cs +++ b/Examples/base_entity/Program.cs @@ -351,6 +351,15 @@ namespace base_entity public int aa { get; set; } } + [Table(Name = "db2.sql_AAA_attr")] + [Index("{tablename}_xxx1", nameof(aa))] + [Index("{tablename}_xxx2", nameof(aa))] + public class SqliteAAA + { + [Column(Name = "aa_attr")] + public int aa { get; set; } + } + public class JoinConditionAttribute : Attribute { public string Condition { get; set; } @@ -389,6 +398,7 @@ namespace base_entity .UseConnectionString(FreeSql.DataType.Sqlite, "data source=:memory:") + //.UseConnectionString(DataType.Sqlite, "data source=db1.db;attachs=db2.db") //.UseSlave("data source=test1.db", "data source=test2.db", "data source=test3.db", "data source=test4.db") //.UseSlaveWeight(10, 1, 1, 5) @@ -429,6 +439,14 @@ namespace base_entity BaseEntity.Initialization(fsql, () => _asyncUow.Value); #endregion + //fsql.CodeFirst.SyncStructure(); + + fsql.CodeFirst.Entity(a => a.Property(p => p.code).IsRequired()); + var repo1010 = fsql.GetRepository(); + var jtitem = new JoinTest01 { id = 100 }; + repo1010.Attach(jtitem); + jtitem.name = "name01"; + repo1010.Update(jtitem); var sqlt0a1 = fsql.InsertOrUpdate<抖店实时销售金额表>() .SetSource(new 抖店实时销售金额表 diff --git a/Providers/FreeSql.Provider.Sqlite/SqliteCodeFirst.cs b/Providers/FreeSql.Provider.Sqlite/SqliteCodeFirst.cs index be6f2f5a..f332db90 100644 --- a/Providers/FreeSql.Provider.Sqlite/SqliteCodeFirst.cs +++ b/Providers/FreeSql.Provider.Sqlite/SqliteCodeFirst.cs @@ -136,7 +136,7 @@ namespace FreeSql.Sqlite { sb.Append("CREATE "); if (uk.IsUnique) sb.Append("UNIQUE "); - sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(tbname[1]).Append("("); + sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(tbname[0], ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(tbname[1]).Append("("); foreach (var tbcol in uk.Columns) { sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name)); @@ -213,7 +213,7 @@ namespace FreeSql.Sqlite { if (string.Concat(dbIndex[3]) == "pk") continue; var dbIndexesColumns = _orm.Ado.ExecuteArray(CommandType.Text, $"PRAGMA {_commonUtils.QuoteSqlName(tbtmp[0])}.INDEX_INFO({dbIndex[1]})"); - var dbIndexesSql = string.Concat(_orm.Ado.ExecuteScalar(CommandType.Text, $" SELECT sql FROM sqlite_master WHERE name = '{dbIndex[1]}'")); + var dbIndexesSql = string.Concat(_orm.Ado.ExecuteScalar(CommandType.Text, $" SELECT sql FROM {_commonUtils.QuoteSqlName(tbtmp[0])}.sqlite_master WHERE name = '{dbIndex[1]}'")); foreach (var dbcolumn in dbIndexesColumns) { var dbcolumnName = string.Concat(dbcolumn[2]); @@ -292,7 +292,7 @@ namespace FreeSql.Sqlite { sb.Append("CREATE "); if (uk.IsUnique) sb.Append("UNIQUE "); - sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON \"").Append(tablenameOnlyTb).Append("\"("); + sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(tbname[0], ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON \"").Append(tablenameOnlyTb).Append("\"("); foreach (var tbcol in uk.Columns) { sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));