Update Entity : Update Rows in Database (LINQ, Entity Framework) |
Update Entity : Update Rows in Database (LINQ, Entity Framework) ในการ Update Entity ด้วย LINQ to Entities บน Entity Framework จะแตกกต่างกัน SQL Statement ตรงที่ ปกติแล้ว SQL Statement เราจะเขียน Update แล้ว Set รายการ Column และเพิ่มเงื่อนไข Where ให้อัพเดดเฉพาะ Record ที่ต้องการ แต่บน Entity Framework เราจะต้องทำการ Select รายการข้อมูลขึ้นมาก่อน และหลังจากที่ได้รายการข้อมูลล้วเราค่อยทำการเปลี่ยนแปลงค่าหรืออัพเดดค่าใหม่ แล้วค่อย Save เข้าไปใหม่
Note!! : ข้อจำกัดของ Entity Framework คือ ไม่สามารถอัพเดดฟิวด์ที่เป็น Key หรือ Primary Key ได้
Example 1 : การ Update Entity หรือ Update ข้อมูลที่มีเพียงรายการหรือ Record เดียว

ข้อมูลที่ต้องการอัพเดดต้องการอัพเดด USED ของ CUSTOMER_ID = C005
Code (C#)
01. private void frmMain_Load( object sender, EventArgs e)
02. {
03.
04. using (var db = new myDatabaseEntities())
05. {
06.
07. string strCustomerID = "C005" ;
08.
09.
10. var update = db.CUSTOMER.Where(o => o.CUSTOMER_ID == strCustomerID).FirstOrDefault();
11. if (update != null )
12. {
13. update.BUDGET = 6000000;
14. update.USED = 100000;
15. }
16.
17. db.SaveChanges();
18. }
19. }
Code (VB.Net)
01. Private Sub frmMain_Load(sender As Object , e As EventArgs) Handles MyBase .Load
02.
03. Using db = New myDatabaseEntities()
04.
05. Dim strCustomerID As String = "C005"
06.
07.
08. Dim update = db.CUSTOMER.Where( Function (o) o.CUSTOMER_ID = strCustomerID).FirstOrDefault()
09. If update IsNot Nothing Then
10. update.BUDGET = 6000000
11. update.USED = 100000
12. End If
13.
14. db.SaveChanges()
15. End Using
16. End Sub
สามารถเขียนได้อีกรูปบบคือ
Code (C#)
01. private void frmMain_Load( object sender, EventArgs e)
02. {
03.
04. using (var db = new myDatabaseEntities())
05. {
06.
07. string strCustomerID = "C005" ;
08.
09.
10. var update = (from c in db.CUSTOMER
11. where c.CUSTOMER_ID == strCustomerID
12. select c).FirstOrDefault();
13. if (update != null )
14. {
15. update.BUDGET = 6000000;
16. update.USED = 100000;
17. }
18.
19. db.SaveChanges();
20. }
21. }
Code (VB.Net)
01. Private Sub frmMain_Load(sender As Object , e As EventArgs) Handles MyBase .Load
02.
03. Using db = New myDatabaseEntities()
04.
05. Dim strCustomerID As String = "C005"
06.
07.
08. Dim update = (From c In db.CUSTOMER Where c.CUSTOMER_ID = strCustomerID
09. Select c).FirstOrDefault()
10. If update IsNot Nothing Then
11. update.BUDGET = 6000000
12. update.USED = 100000
13. End If
14.
15. db.SaveChanges()
16. End Using
17. End Sub
Screenshot

Example 2 : การ Update Entity หรือ Update ข้อมูลในหลาย ๆ รายการ หรือหลาย Record

ข้อมูลที่ต้องการอัพเดด โดยเลือกอัพเดดรายการ BUDGET และ USED ที่ COUNTRY_CODE ตรงกับเงื่อนไขที่เขียนขึ้น
Code (C#)
01. private void frmMain_Load( object sender, EventArgs e)
02. {
03.
04. using (var db = new myDatabaseEntities())
05. {
06.
07. string strCountryCode = "US" ;
08.
09.
10. var update = (from c in db.CUSTOMER
11. where c.COUNTRY_CODE == strCountryCode
12. select c).ToList();
13. if (update.Count() > 0)
14. {
15.
16. foreach (var item in update)
17. {
18. item.BUDGET = 5000000;
19. item.USED = 200000;
20. }
21. }
22.
23. db.SaveChanges();
24. }
25. }
Code (VB.Net)
01. Private Sub frmMain_Load(sender As Object , e As EventArgs) Handles MyBase .Load
02.
03. Using db = New myDatabaseEntities()
04.
05. Dim strCountryCode As String = "US"
06.
07.
08. Dim update = (From c In db.CUSTOMER Where c.COUNTRY_CODE = strCountryCode
09. Select c).ToList()
10. If update.Count() > 0 Then
11.
12. For Each item In update
13. item.BUDGET = 5000000
14. item.USED = 200000
15. Next
16. End If
17.
18. db.SaveChanges()
19. End Using
20. End Sub
เขียนได้อีกวิธี ซึ่งทั้ง 2 วิธ๊นี้ได้ผลลัพธ์ที่ไม่แตกต่างกัน
Code (C#)
01. private void frmMain_Load( object sender, EventArgs e)
02. {
03.
04. using (var db = new myDatabaseEntities())
05. {
06.
07. string strCountryCode = "US" ;
08.
09.
10. var update = db.CUSTOMER.Where(o => o.COUNTRY_CODE == strCountryCode).ToList();
11. if (update.Count() > 0)
12. {
13.
14. update.ForEach(o => { o.BUDGET = 5000000; o.USED = 100000; });
15. }
16.
17. db.SaveChanges();
18. }
19. }
Code (VB.Net)
01. Private Sub frmMain_Load(sender As Object , e As EventArgs) Handles MyBase .Load
02.
03. Using db = New myDatabaseEntities()
04.
05. Dim strCountryCode As String = "US"
06.
07.
08. Dim update = db.CUSTOMER.Where( Function (o) o.COUNTRY_CODE = strCountryCode).ToList()
09. If update.Count() > 0 Then
10.
11. update.ForEach( Function (o) {o.BUDGET = 5000000, o.USED = 100000})
12. End If
13.
14. db.SaveChanges()
15. End Using
16. End Sub
Screenshot

.
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
   |
|
|
Create/Update Date : |
2015-10-02 21:17:44 /
2017-03-24 23:00:09 |
|
Download : |
No files |
|
Sponsored Links / Related |
|
|
|
|
|
|