影片講解
恭喜你支撐到這篇也恭喜自己寫到這邊了~~~
接下來就要正式進入更新資料的教學
首先跟新增資料一樣,我們會傳個更新的內容進來
// PUT api/<TodoController>/5
[HttpPut("{id}")]
public void Put(Guid id, [FromBody] TodoList value)
{
}
路由的部分我們會帶上要更新的id,這是restful的規範,當然你不要也行。
接著我們會接收到兩個參數,一個是路由過來的Guid id
一個是使用者傳來要更新的資料[FromBody] TodoList value
,這邊的FromBody可以省略。
那這邊可以用一個簡單的函式做更新
[HttpPut("{id}")]
public void Put(Guid id, [FromBody] TodoList value)
{
_todoContext.TodoLists.Update(value);
_todoContext.SaveChanges();
}
但通常這不會是符合我們的需求,所以我們要用另一種方式做更新。
var update = (from a in _todoContext.TodoLists
where a.TodoId == id
select a).SingleOrDefault();
先撈出你要更新的那一筆
if (update != null)
{
update.InsertTime = DateTime.Now;
update.UpdateTime = DateTime.Now;
update.InsertEmployeeId = Guid.Parse("00000000-0000-0000-0000-000000000001");
update.UpdateEmployeeId = Guid.Parse("00000000-0000-0000-0000-000000000001");
update.Name = value.Name;
update.Orders = value.Orders;
update.Enable = value.Enable;
_todoContext.SaveChanges();
}
接著如果撈出來為空我們就不做任何動作,如果有資料我們就進行更新動作。
在上面程式碼中,我們一開始更新的部分是系統給值得部分,下面update.Name = value.Name
則是用使用者傳來的資料進行更新,最後再進行_todoContext.SaveChanges()
,資料就會更新上去了。
最後完整的程式碼如下
[HttpPut("{id}")]
public void Put(Guid id, [FromBody] TodoList value)
{
//_todoContext.TodoLists.Update(value);
//_todoContext.SaveChanges();
// var update = _todoContext.TodoLists.Find(id);
var update = (from a in _todoContext.TodoLists
where a.TodoId == id
select a).SingleOrDefault();
if (update != null)
{
update.InsertTime = DateTime.Now;
update.UpdateTime = DateTime.Now;
update.InsertEmployeeId = Guid.Parse("00000000-0000-0000-0000-000000000001");
update.UpdateEmployeeId = Guid.Parse("00000000-0000-0000-0000-000000000001");
update.Name = value.Name;
update.Orders = value.Orders;
update.Enable = value.Enable;
_todoContext.SaveChanges();
}
}
以上就是這篇更新資料的簡單示範,想看詳細操作的話可以看影片。
範例檔案:下載
新手分享學習成果,若有錯誤,煩請告知修正,感謝🙏