Skip to content

Commit dc1b302

Browse files
committed
优化 ToString 方法
1 parent 4fa06ef commit dc1b302

File tree

5 files changed

+42
-14
lines changed

5 files changed

+42
-14
lines changed

.vs/MyStaging/v15/.suo

8.5 KB
Binary file not shown.

MyStaging.xUnitTest/UpdateBuilderTest.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@ public UpdateBuilderTest()
2121
public void Update()
2222
{
2323
string userid = "5b1b54bfd86b1b3bb0000009";
24+
var user = User.Context.Where(f => f.Id == userid).ToOne();
25+
var builder = user.UpdateBuilder;
26+
builder.SetMoney(2000);
27+
var sql = builder.ToString();
28+
builder.SaveChange();
29+
2430
var rows = User.UpdateBuilder.Where(f => f.Id == userid).SetMoney(2000).SetSex(false).SaveChange();
2531

2632
Assert.Equal(1, rows);

MyStaging/Helpers/DeleteBuilder.cs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ namespace MyStaging.Helpers
2525
/// <returns></returns>
2626
public int SaveChange()
2727
{
28-
string tableName = MyStagingUtils.GetMapping(typeof(T));
2928
if (WhereExpressionList.Count > 0)
3029
{
3130
foreach (var item in WhereExpressionList)
@@ -40,9 +39,21 @@ public int SaveChange()
4039
if (this.WhereList.Count == 0)
4140
throw new ArgumentException("The delete operation must specify where conditions!");
4241

42+
this.ToString();
43+
44+
return base.ExecuteNonQuery(this.CommandText);
45+
}
46+
47+
/// <summary>
48+
/// 重写方法
49+
/// </summary>
50+
/// <returns></returns>
51+
public override string ToString()
52+
{
53+
string tableName = MyStagingUtils.GetMapping(typeof(T));
54+
this.CommandText = $"DELETE FROM {tableName} a {"WHERE " + string.Join("\nAND ", WhereList)}";
4355

44-
string cmdText = $"DELETE FROM {tableName} {"WHERE " + string.Join("\nAND ", WhereList)}";
45-
return base.ExecuteNonQuery(cmdText);
56+
return this.CommandText;
4657
}
4758
}
4859
}

MyStaging/Helpers/UpdateBuilder.cs

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,6 @@ protected UpdateBuilder<T> SetArrayRemove(string field, NpgsqlDbType dbType, obj
8787
/// <returns></returns>
8888
public int SaveChange()
8989
{
90-
if (this.setList.Count == 0)
91-
throw new ArgumentException("fields to be updated must be provided!");
92-
93-
string tableName = MyStagingUtils.GetMapping(typeof(T));
9490
if (WhereExpressionList.Count > 0)
9591
{
9692
foreach (var item in WhereExpressionList)
@@ -102,28 +98,43 @@ public int SaveChange()
10298
}
10399
}
104100

101+
if (this.setList.Count == 0)
102+
throw new ArgumentException("fields to be updated must be provided!");
103+
105104
if (this.WhereList.Count == 0)
106105
throw new ArgumentException("The update operation must specify where conditions!");
107106

107+
this.ToString();
108108

109-
string cmdText = $"UPDATE {tableName} SET {string.Join(",", this.setList)} {"WHERE " + string.Join("\nAND ", WhereList)}";
110109
int affrows = 0;
111110
if (OnChanged != null)
112111
{
113-
cmdText += " RETURNING *;";
112+
this.CommandText += " RETURNING *;";
114113

115-
var objList = base.ByMaster().ExecuteReader<T>(cmdText);
114+
var objList = base.ByMaster().ExecuteReader<T>(this.CommandText);
116115
affrows = objList.Count;
117116
if (affrows > 0 && this.OnChanged != null)
118117
{
119118
OnChanged(objList[0]);
120119
}
121120
}
122121
else
123-
affrows = base.ExecuteNonQuery(cmdText);
122+
affrows = base.ExecuteNonQuery(this.CommandText);
124123

125124
return affrows;
126125
}
127126

127+
/// <summary>
128+
/// 重写方法
129+
/// </summary>
130+
/// <returns></returns>
131+
public override string ToString()
132+
{
133+
string tableName = MyStagingUtils.GetMapping(typeof(T));
134+
this.CommandText = $"UPDATE {tableName} a SET {string.Join(",", this.setList)} {"WHERE " + string.Join("\nAND ", WhereList)}";
135+
136+
return this.CommandText;
137+
}
138+
128139
}
129140
}

MyStaging/MyStaging.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
<Copyright>MIT</Copyright>
99
<PackageLicenseUrl>https://github.com/lianggx/mystaging/blob/master/LICENSE</PackageLicenseUrl>
1010
<PackageProjectUrl>https://github.com/lianggx/mystaging</PackageProjectUrl>
11-
<Version>1.0.5</Version>
12-
<AssemblyVersion>1.0.5.0</AssemblyVersion>
13-
<FileVersion>1.0.5.0</FileVersion>
11+
<Version>1.0.6</Version>
12+
<AssemblyVersion>1.0.6.0</AssemblyVersion>
13+
<FileVersion>1.0.6.0</FileVersion>
1414
<PackageReleaseNotes>增加 Update 和 Delete 操作的检查,当没有指定更新字段和 Where 条件时,将抛出异常,防止对整表的误操作</PackageReleaseNotes>
1515
</PropertyGroup>
1616

0 commit comments

Comments
 (0)