mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 04:18:16 +08:00
- 增加 ISelect ToDelete/ToUpdate 方法,实现更复杂的删除/更新操作;
This commit is contained in:
@ -1220,5 +1220,139 @@ namespace FreeSql.Tests.Odbc.SqlServer
|
||||
.Where(a => a.Tag.Id == tag1.Id || a.Tag.Id == tag2.Id)
|
||||
.ToList(true);
|
||||
}
|
||||
|
||||
public class ToDel1Pk
|
||||
{
|
||||
[Column(IsIdentity = true)]
|
||||
public int id { get; set; }
|
||||
public string name { get; set; }
|
||||
}
|
||||
public class ToDel2Pk
|
||||
{
|
||||
[Column(IsPrimary = true)]
|
||||
public Guid pk1 { get; set; }
|
||||
[Column(IsPrimary = true)]
|
||||
public string pk2 { get; set; }
|
||||
public string name { get; set; }
|
||||
}
|
||||
public class ToDel3Pk
|
||||
{
|
||||
[Column(IsPrimary = true)]
|
||||
public Guid pk1 { get; set; }
|
||||
[Column(IsPrimary = true)]
|
||||
public int pk2 { get; set; }
|
||||
[Column(IsPrimary = true)]
|
||||
public string pk3 { get; set; }
|
||||
public string name { get; set; }
|
||||
}
|
||||
[Fact]
|
||||
public void ToDelete()
|
||||
{
|
||||
g.sqlserver.Select<ToDel1Pk>().ToDelete().ExecuteAffrows();
|
||||
Assert.Equal(0, g.sqlserver.Select<ToDel1Pk>().Count());
|
||||
g.sqlserver.Insert(new[] {
|
||||
new ToDel1Pk{ name = "name1"},
|
||||
new ToDel1Pk{ name = "name2"},
|
||||
new ToDel1Pk{ name = "nick1"},
|
||||
new ToDel1Pk{ name = "nick2"},
|
||||
new ToDel1Pk{ name = "nick3"}
|
||||
}).ExecuteAffrows();
|
||||
Assert.Equal(2, g.sqlserver.Select<ToDel1Pk>().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
|
||||
Assert.Equal(3, g.sqlserver.Select<ToDel1Pk>().Count());
|
||||
Assert.Equal(3, g.sqlserver.Select<ToDel1Pk>().Where(a => a.name.StartsWith("nick")).Count());
|
||||
|
||||
g.sqlserver.Select<ToDel2Pk>().ToDelete().ExecuteAffrows();
|
||||
Assert.Equal(0, g.sqlserver.Select<ToDel2Pk>().Count());
|
||||
g.sqlserver.Insert(new[] {
|
||||
new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name1"},
|
||||
new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name2"},
|
||||
new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick1"},
|
||||
new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick2"},
|
||||
new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick3"}
|
||||
}).ExecuteAffrows();
|
||||
Assert.Equal(2, g.sqlserver.Select<ToDel2Pk>().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
|
||||
Assert.Equal(3, g.sqlserver.Select<ToDel2Pk>().Count());
|
||||
Assert.Equal(3, g.sqlserver.Select<ToDel2Pk>().Where(a => a.name.StartsWith("nick")).Count());
|
||||
|
||||
g.sqlserver.Select<ToDel3Pk>().ToDelete().ExecuteAffrows();
|
||||
Assert.Equal(0, g.sqlserver.Select<ToDel3Pk>().Count());
|
||||
g.sqlserver.Insert(new[] {
|
||||
new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name1"},
|
||||
new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name2"},
|
||||
new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick1"},
|
||||
new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick2"},
|
||||
new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick3"}
|
||||
}).ExecuteAffrows();
|
||||
Assert.Equal(2, g.sqlserver.Select<ToDel3Pk>().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
|
||||
Assert.Equal(3, g.sqlserver.Select<ToDel3Pk>().Count());
|
||||
Assert.Equal(3, g.sqlserver.Select<ToDel3Pk>().Where(a => a.name.StartsWith("nick")).Count());
|
||||
}
|
||||
|
||||
public class ToUpd1Pk
|
||||
{
|
||||
[Column(IsIdentity = true)]
|
||||
public int id { get; set; }
|
||||
public string name { get; set; }
|
||||
}
|
||||
public class ToUpd2Pk
|
||||
{
|
||||
[Column(IsPrimary = true)]
|
||||
public Guid pk1 { get; set; }
|
||||
[Column(IsPrimary = true)]
|
||||
public string pk2 { get; set; }
|
||||
public string name { get; set; }
|
||||
}
|
||||
public class ToUpd3Pk
|
||||
{
|
||||
[Column(IsPrimary = true)]
|
||||
public Guid pk1 { get; set; }
|
||||
[Column(IsPrimary = true)]
|
||||
public int pk2 { get; set; }
|
||||
[Column(IsPrimary = true)]
|
||||
public string pk3 { get; set; }
|
||||
public string name { get; set; }
|
||||
}
|
||||
[Fact]
|
||||
public void ToUpdate()
|
||||
{
|
||||
g.sqlserver.Select<ToUpd1Pk>().ToDelete().ExecuteAffrows();
|
||||
Assert.Equal(0, g.sqlserver.Select<ToUpd1Pk>().Count());
|
||||
g.sqlserver.Insert(new[] {
|
||||
new ToUpd1Pk{ name = "name1"},
|
||||
new ToUpd1Pk{ name = "name2"},
|
||||
new ToUpd1Pk{ name = "nick1"},
|
||||
new ToUpd1Pk{ name = "nick2"},
|
||||
new ToUpd1Pk{ name = "nick3"}
|
||||
}).ExecuteAffrows();
|
||||
Assert.Equal(2, g.sqlserver.Select<ToUpd1Pk>().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
|
||||
Assert.Equal(5, g.sqlserver.Select<ToUpd1Pk>().Count());
|
||||
Assert.Equal(5, g.sqlserver.Select<ToUpd1Pk>().Where(a => a.name.StartsWith("nick")).Count());
|
||||
|
||||
g.sqlserver.Select<ToUpd2Pk>().ToDelete().ExecuteAffrows();
|
||||
Assert.Equal(0, g.sqlserver.Select<ToUpd2Pk>().Count());
|
||||
g.sqlserver.Insert(new[] {
|
||||
new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name1"},
|
||||
new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name2"},
|
||||
new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick1"},
|
||||
new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick2"},
|
||||
new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick3"}
|
||||
}).ExecuteAffrows();
|
||||
Assert.Equal(2, g.sqlserver.Select<ToUpd2Pk>().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
|
||||
Assert.Equal(5, g.sqlserver.Select<ToUpd2Pk>().Count());
|
||||
Assert.Equal(5, g.sqlserver.Select<ToUpd2Pk>().Where(a => a.name.StartsWith("nick")).Count());
|
||||
|
||||
g.sqlserver.Select<ToUpd3Pk>().ToDelete().ExecuteAffrows();
|
||||
Assert.Equal(0, g.sqlserver.Select<ToUpd3Pk>().Count());
|
||||
g.sqlserver.Insert(new[] {
|
||||
new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name1"},
|
||||
new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name2"},
|
||||
new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick1"},
|
||||
new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick2"},
|
||||
new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick3"}
|
||||
}).ExecuteAffrows();
|
||||
Assert.Equal(2, g.sqlserver.Select<ToUpd3Pk>().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
|
||||
Assert.Equal(5, g.sqlserver.Select<ToUpd3Pk>().Count());
|
||||
Assert.Equal(5, g.sqlserver.Select<ToUpd3Pk>().Where(a => a.name.StartsWith("nick")).Count());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user