大家好,目前有一Web Mehod要更新用戶資訊,用戶資訊結構如下:
{
"uID": 0,
"riDs": [
0
],
"uLoginName": "string",
"uLoginPWD": "string",
"uRealName": "string",
"uStatus": 0,
"uRemark": "string",
"uCreateTime": "2021-01-21T02:42:34.831Z",
"uUpdateTime": "2021-01-21T02:42:34.831Z",
"uLastErrTime": "2021-01-21T02:42:34.831Z",
"uErrorCount": 0,
"name": "string",
"sex": 0,
"age": 0,
"birth": "2021-01-21T02:42:34.831Z",
"addr": "string",
"tdIsDelete": true,
"roleNames": [
"string"
]
}
public async Task<MessageModel<string>> Put([FromBody] sysUserInfo sysUserInfo)
但其實以更新的情況來說,uCreateTime, uUpdateTime,uLastErrTime都不應該是由用戶填入的, 就算我將這三個參數從json中移除,但因為接收的sysUserInfo還是會有這三個參數,只是可能數值不為正確的時間,應該是有方法能做到自動判別哪些參數是require,哪些是optional,並且只更新部份的資料…
目前Add和Put都是用相同的Class(sysUserInfo)來接收數據,我得另外創建一個專門供Put更新使用的Class嗎?
懇求板上大神給予指導或關鍵字查詢,謝謝了。
uj5u.com熱心網友回復:
能否基于SqlSugar來設定只更新哪些欄位using (SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = "Server=.xxxxx",
DbType = DbType.SqlServer,
IsAutoCloseConnection = true,
InitKeyType = InitKeyType.Attribute
}))
{
//Where By Expression
var test = db.Updateable<sysUserInfo>(it => new sysUserInfo() { uLoginName = "", uLoginPWD = "" , uRealName="" }).Where(it => it.uID == 0).ExecuteCommand();
}
uj5u.com熱心網友回復:
謝謝分享,我目前找到了以下的另一種方式,有經過包裝的~
public async Task<bool> Update(
TEntity entity,
List<string> lstColumns = null,
List<string> lstIgnoreColumns = null,
string strWhere = ""
)
{
IUpdateable<TEntity> up = _db.Updateable(entity);
if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0)
{
up = up.IgnoreColumns(lstIgnoreColumns.ToArray());
}
if (lstColumns != null && lstColumns.Count > 0)
{
up = up.UpdateColumns(lstColumns.ToArray());
}
if (!string.IsNullOrEmpty(strWhere))
{
up = up.Where(strWhere);
}
return await up.ExecuteCommandHasChangeAsync();
}
想請問如何快速分類sysUserInfo內的資料且存到不同的List內呢?
我打算搭配[Required], [StringLength]..等等來做限制,如果用戶沒填的資料,在接收時會是null,想藉由null來判斷這資料用戶是否有想要更新。
再麻煩不吝賜教,謝謝。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/251068.html
標籤:ASP.NET
