PracticU

עדכון מלא ב-SQL Database

בלי כתוביותעם כתוביות
PracticU › קורס דוט-נט - NET Core. - עם Rest API › עדכון מלא ב-SQL Database
עדכון מלא ב-SQL Database
ההרצאה בונה עדכון מלא של ספר עם PUT: איך לשלוף את הספר, לדרוס את שדותיו, לשמור ולהחזיר אותו.
איך זה עובד
1. ב-Service: הפונקציה UpdateBook מקבלת ספר ומחזירה את המעודכן, כי REST API צריך להחזיר אותו. קודם מביאים את הספר מהמסד עם GetOneBook לפי book.Id.
2. עדכון השדות: מעדכנים Title, Description ו-Price לפי הספר שהתקבל, מבצעים SaveChanges ומחזירים את dbBook.
3. מקרה של ספר שלא קיים: אם dbBook הוא null, מחזירים null, ולכן טיפוס ההחזרה הוא Book?.
4. למה הקוד ב-Service: כל הלוגיקה הזאת לא אמורה להיות ב-Controller.
5. ב-Controller: מעתיקים את הפונקציה בשם UpdateBook עם HttpPut ונתיב api/books. ה-ID מגיע מה-route עם [FromRoute], והספר מהגוף עם [FromBody].
6. דריסת ה-ID: הפרונט אמור לשלוח את ה-ID בנתיב, אך ה-ID שבגוף עשוי להיות זהה, שונה או חסר. לכן מבצעים book.Id = id ומתעלמים ממה שנשלח. בנייה נכונה של השרת מכתיבה לפרונט את המוסכמה.
7. סטטוס: מחזירים Ok עם 200, כי אין סטטוס מיוחד לעדכון.
8. בדיקה: ב-Postman משכפלים את Add Book, משנים ל-put ושולחים לספר 1 את ה-JSON עם כותרת ".NET C Sharp" ומחיר 123. התשובה כוללת את הנתונים החדשים, ואחרי רענון ב-SSMS הערכים מעודכנים.
שימו לב
- בלי ID בנתיב הפונקציה לא תתבצע, וזה גם הנכון לעדכון.
עכשיו אפשר לעדכן ספר שלם דרך PUT.
השיעור הבא בקורס: עדכון חלקי במסד נתונים דוט נט NET Core.

פרקי ההרצאה: עדכון מלא ב-SQL Database

  1. 00:00

    בניית פונקציית Update מלא

  2. 00:37

    עדכון שדות הספר מהדטאבייס

  3. 01:15

    טיפול בספר שלא נמצא

  4. 01:52

    העברת העדכון לקונטרולר עם PUT

  5. 02:30

    קבלת ID מ-Route וספר מ-Body

  6. 03:09

    מוסכמת ה-ID ב-Route

תמלול ההרצאה: עדכון מלא ב-SQL Database

הטקסט המלא של הדקות הראשונות בהרצאה «עדכון מלא ב-SQL Database» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    אחרי שאוספנו ספר, בואו נעדכן ספר. בואו נבנה פונקציה public book update. תקבל בוק לצורך עדכון, תעדכן אותו ותחזיר את המעודכן, כי אנחנו יודעים ש-RST API צריך להחזיר אותו בחזרה.

  2. 00:19

    טוב, קודם כל בואו נביא את הספר מהדטאבייס. יכול להיות ששלחו לי פה איזשהו ספר שכבר מאיזושהי סיבה לא קיים בדטאבייס, אז אולי הוא יחזור כנל.

  3. 00:32

    אז הנה יש לנו פה את ה-dbbook, וכבר בנינו פונקציה שנקראת getOneBook, ניתן לה את ה-book.id, והיא תביא לנו את הספר as is מה-database. אם יש לנו את הספר מה-database, אנחנו יכולים להיכנס ל-dbbook.title, ולהדכן אותו לפי ה-book שהתקבל, בואו נעשה את אותו הדבר גם ל-description, נגדיר description, ו...

  4. 01:02

    ל-price, book.price. אחרי שהתקנו את כל ההסדות, ניגש ונבצע db save changes, ונחזיר את ה-db book שכבר מכיל את הערכים החדשים.

  5. 01:18

    יש לנו פה איזשהו warning שאנחנו צריכים לטפל בו, ואם הדבר הזה נל, אולי שלחו לי איזה book עם ID שלא קיים, אז כמובן הפונקציה הזאת שכבר בנינו מקודם כאן, תחזיר לנו נל, אז...

  6. 01:31

    מה שנעשה זה פשוט נבדוק אם db book ו-null לא היה ספר כזה, אז תחזיר לי בחזרה null, וזה אומר שגם הפונקציה הזאת צריכה להחזיר book עם סימן שאלה.

  7. 01:47

    יש לנו פה בסרוויס פונקציה שיודעת לעדכן ספר מלא. שימו לב כמה קוד זה דרש מאיתנו, כאשר אנחנו לא רוצים את הקוד הזה ברמת הקונטרולרים, ולכן...

  8. 02:01

    יש לנו פה שימוש בסרוויסים. בואו ניקח את הפונקציה הזאת, נעתיק אותה בקונטרולר, נדביק, אנחנו רוצים לא HTTP POST, אלא HTTP PUT, אנחנו רוצים לגלוש ל-API BOOKS, ואם אתם זוכרים, הניהול הנכון זה שה-ID מוגדר פה.

  9. 02:19

    אז קודם כל אנחנו רוצים שהפונקציה הזאת תקבל, קודם כל שנקרא לה UPDATE BOOK, ושתקבל את ה-ID מה-Route, אז נגדיר From Route Int ID, רגע, נרווח פה טיפה, ואת שאר הספר מה-Body, From Body.

  10. 02:41

    עכשיו, כאשר המשתמש או ה-frontend או ה-postman, לא משנה מי, שולחים לנו את ה-JSON ל-Update Book, הם אמורים לשלוח לנו את ה-ID ב-Route, אם הם לא ישלחו לנו את ה-ID ב-Route, כמו גם, הפונקציה הזאת לא תתבצע כי היא חייבת לקבל ID בראות וזאת גם השיטה הנכונה כאשר אנחנו עושים Update אבל היא צריכה לשלוח

  11. 03:02

    לי את הבוק בבאדי יכול להיות שהבוק בבאדי כבר מכיל ID יכול להיות שה-ID אותו הדבר כמו ה-ID הזה יכול להיות שה-ID בכלל שונה אני לא יודע זה הנקודה ברסט-אפי לא מעניין אותי כשאני בונה רסט-אפי מה הפרונט שולח?

  12. 03:18

    יש מוסכמה בינלאומית הפרונט צריך לעמוד במוסכמה אני מכתיב לו אותה כשאני בונה את השרת ולכן... אני לא יודע אם פה יש ID, אם ה-ID הוא אותו הדבר כמו ה-ID הזה, אם ה-ID שונה או בכלל אין ID, לכן מה שאנחנו עושים זה book.id שווה

ההרצאה הקודמת: הוספת נתון חדש למסד נתונים

ההרצאה הבאה: עדכון חלקי במסד נתונים - דוט נט NET Core.

הרצאות קשורות מקורסים אחרים

  • עדכון מלא של מוצר ב-MySQL
  • עדכון רשומות קיימות ב-SQL
  • סיכום פרק Azure Database
  • עדכון של Kali

קורסים נוספים במסלול

  • קורס Entity Framework Core - עבודה עם מסד נתונים בדוט-נט
  • קורס ASP.NET
  • קורס MVC
  • קורס Git ו-GitHub עם Visual Studio