Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 629cbc3

Browse files
committed
Add new db.DeleteAll<T>(rows) API
1 parent b37e97f commit 629cbc3

File tree

3 files changed

+35
-0
lines changed

3 files changed

+35
-0
lines changed

src/ServiceStack.OrmLite/OrmLiteWriteApi.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,16 @@ public static int DeleteAll<T>(this IDbConnection dbConn)
174174
return dbConn.Exec(dbCmd => dbCmd.DeleteAll<T>());
175175
}
176176

177+
/// <summary>
178+
/// Delete all rows provided. E.g:
179+
/// <para>db.DeleteAll&lt;Person&gt;(people)</para>
180+
/// </summary>
181+
/// <returns>number of rows deleted</returns>
182+
public static int DeleteAll<T>(this IDbConnection dbConn, IEnumerable<T> rows)
183+
{
184+
return dbConn.Exec(dbCmd => dbCmd.DeleteAll(rows));
185+
}
186+
177187
/// <summary>
178188
/// Delete all rows in the runtime table type. E.g:
179189
/// <para>db.DeleteAll(typeof(Person))</para>

src/ServiceStack.OrmLite/OrmLiteWriteCommandExtensions.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -642,6 +642,12 @@ internal static int DeleteAll<T>(this IDbCommand dbCmd)
642642
return DeleteAll(dbCmd, typeof(T));
643643
}
644644

645+
internal static int DeleteAll<T>(this IDbCommand dbCmd, IEnumerable<T> rows)
646+
{
647+
var ids = rows.Map(x => x.GetId());
648+
return dbCmd.DeleteByIds<T>(ids);
649+
}
650+
645651
internal static int DeleteAll(this IDbCommand dbCmd, Type tableType)
646652
{
647653
return dbCmd.ExecuteSql(dbCmd.GetDialectProvider().ToDeleteStatement(tableType, null));

tests/ServiceStack.OrmLite.Tests/OrmLiteDeleteTests.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,25 @@ public void TearDown()
2828
db.Dispose();
2929
}
3030

31+
[Test]
32+
public void Can_delete_all_rows()
33+
{
34+
var row1 = ModelWithFieldsOfDifferentTypes.Create(1);
35+
var row2 = ModelWithFieldsOfDifferentTypes.Create(2);
36+
var row3 = ModelWithFieldsOfDifferentTypes.Create(3);
37+
38+
db.Save(row1);
39+
db.Save(row2);
40+
db.Save(row3);
41+
42+
db.DeleteAll(new[] {row1, row3});
43+
44+
var remaining = db.Select<ModelWithFieldsOfDifferentTypes>();
45+
46+
Assert.That(remaining.Count, Is.EqualTo(1));
47+
Assert.That(remaining[0].Id, Is.EqualTo(row2.Id));
48+
}
49+
3150
[Test]
3251
public void Can_Delete_from_ModelWithFieldsOfDifferentTypes_table()
3352
{

0 commit comments

Comments
 (0)