diff --git a/Extensions/FreeSql.Extensions.BaseEntity/BaseEntity.cs b/Extensions/FreeSql.Extensions.BaseEntity/BaseEntity.cs index fa8f9669..7ef0b544 100644 --- a/Extensions/FreeSql.Extensions.BaseEntity/BaseEntity.cs +++ b/Extensions/FreeSql.Extensions.BaseEntity/BaseEntity.cs @@ -80,8 +80,17 @@ namespace FreeSql /// /// 删除数据 /// + /// 是否物理删除 /// - public virtual bool Delete() => this.UpdateIsDeleted(true); + public virtual bool Delete(bool physicalDelete = false) + { + if (physicalDelete == false) return this.UpdateIsDeleted(true); + if (this.Repository == null) + return Orm.Delete(this as TEntity).ExecuteAffrows() == 1; + //this.SetTenantId(); + this.Repository.UnitOfWork = UnitOfWork.Current.Value; + return this.Repository.Delete(this as TEntity) == 1; + } /// /// 恢复删除的数据 /// diff --git a/Extensions/FreeSql.Extensions.BaseEntity/BaseEntityAsync.cs b/Extensions/FreeSql.Extensions.BaseEntity/BaseEntityAsync.cs index 4b98dca2..13a3c29e 100644 --- a/Extensions/FreeSql.Extensions.BaseEntity/BaseEntityAsync.cs +++ b/Extensions/FreeSql.Extensions.BaseEntity/BaseEntityAsync.cs @@ -62,8 +62,17 @@ namespace FreeSql /// /// 删除数据 /// + /// 是否物理删除 /// - public virtual Task DeleteAsync() => this.UpdateIsDeletedAsync(true); + async public virtual Task DeleteAsync(bool physicalDelete = false) + { + if (physicalDelete == false) return await this.UpdateIsDeletedAsync(true); + if (this.Repository == null) + return await Orm.Delete(this as TEntity).ExecuteAffrowsAsync() == 1; + //this.SetTenantId(); + this.Repository.UnitOfWork = UnitOfWork.Current.Value; + return await this.Repository.DeleteAsync(this as TEntity) == 1; + } /// /// 恢复删除的数据 /// diff --git a/FreeSql.Tests/FreeSql.Tests/UnitTest2.cs b/FreeSql.Tests/FreeSql.Tests/UnitTest2.cs index f65fd232..7b687258 100644 --- a/FreeSql.Tests/FreeSql.Tests/UnitTest2.cs +++ b/FreeSql.Tests/FreeSql.Tests/UnitTest2.cs @@ -230,6 +230,9 @@ namespace FreeSql.Tests [Fact] public void Test02() { + var testcf = g.sqlite.CodeFirst.GetComparisonDDLStatements(typeof(dfDto2), "main.test2"); + + var u1 = new userinfo { name = "111", departments = new List(new[]{ diff --git a/Providers/FreeSql.Provider.Sqlite/SqliteAdo/SqliteConnectionPool.cs b/Providers/FreeSql.Provider.Sqlite/SqliteAdo/SqliteConnectionPool.cs index a6805118..bc915c72 100644 --- a/Providers/FreeSql.Provider.Sqlite/SqliteAdo/SqliteConnectionPool.cs +++ b/Providers/FreeSql.Provider.Sqlite/SqliteAdo/SqliteConnectionPool.cs @@ -242,7 +242,7 @@ namespace FreeSql.Sqlite { var sb = new StringBuilder(); foreach (var att in attach) - sb.Append($"attach database [{att}] as [{att.Split('.').First()}];\r\n"); + sb.Append($"attach database [{att}] as [{att.Split('/', '\\').Last().Split('.').First()}];\r\n"); var cmd = that.CreateCommand(); cmd.CommandText = sb.ToString(); @@ -274,7 +274,7 @@ namespace FreeSql.Sqlite { var sb = new StringBuilder(); foreach (var att in attach) - sb.Append($"attach database [{att}] as [{att.Split('.').First()}];\r\n"); + sb.Append($"attach database [{att}] as [{att.Split('/', '\\').Last().Split('.').First()}];\r\n"); var cmd = that.CreateCommand(); cmd.CommandText = sb.ToString();