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();