
public static readonly string במחלקת ה-SQL, CREATE OR ALTER PROCEDURE SearchGifts.@. בדוגמה @text מסוג nvarchar(100), בגודל זהה לעמודת שם המתנה בטבלה, שנבדק ב-Design.select * from Gifts where Name like '%' + @text + '%', כלומר חיפוש מתנות ששמן מכיל את הטקסט.DROP PROCEDURE IF EXISTS SearchGifts.Up קריאת Sql נוספת ליצירה, וב-Down קריאה למחיקה, ליד ה-View.Update-Database שוב לא יוצרת את ה-Procedure, כי הטבלה __EFMigrationsHistory כבר רושמת ש-migration הזו בוצעה. אפשר למחוק אותה ולייצר חדשה. המרצה בוחר בקיצור: מוחק את השורה מהטבלה, ואז Update-Database מבצע את ה-migration שוב, והפרוצדורה מופיעה תחת Stored Procedures עם הקוד ששומרים. עדיין לא נבדקה, ועלולה להכיל שגיאה.הטקסט המלא של הדקות הראשונות בהרצאה «יצירת Stored Procedure Entity Framework Core» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
בפרק הזה אנחנו רוצים לראות איך אנחנו ב-Entity Framework משתמשים ב-Stored Procedures. בדומה ל-Views יש לנו יכולת גם בשיטת Code First לייצר שאילתא של Stored Procedure לשמור אותה בדאטאבייס ולאחר מכן להשתמש בה.
כמובן שאנחנו נרצה גם לייצר את השאילתא ההפוכה שמסירה את ה-Stored Procedure במקרה ועושים rollback ל-Migration. להזכירכם, זה קטע קוד שיכול לקבל ארגומנטים ולבצע פעולות והוא מקומפל ונשמר בתוך הדאטאבייס והתוכנית יכולה לקרוא לו יש לזה חשיבויות עצומות בפיתוח
תוכנה הוא הרבה יותר מהיר משאילתות ה-views הוא יכול להסתיר מידע הוא יכול לבצע קוד במקום לגשת ישירות לטבלאות הוא מבצע את הקוד אנחנו יכולים כמו שראינו בעבר להסתיר את הטבלאות ולא לתת גישה אליהם ולתת גישה רק דרך views ו-stored procedures ועוד המון יתרונות אחרים.
קודם כל אנחנו רוצים לראות איך אנחנו מייצרים לעצמנו איזושהי שאילתא שמאפשרת לשמור stored procedure ולהסיר stored procedure. בואו ניקח את זה, public static read only, String, Create ואני אומר לו שאני רוצה לייצר SP, Stored Procedure ובואו נייצר Stored Procedure שנקראת Search Gifts.
זאת אומרת הסטורט פרוסיג'ר צריכה לקבל איזשהו טקסט ולפי הטקסט לבצע חיפוש של מתנות שמכילות את הטקסט הזה בשם שלהם.
הקוד שאנחנו רוצים הוא create or alter procedure נקרא לה search gifts ברבים. יש לנו פה סוגריים כאילו שאנחנו פונקציה בפיתוח תוכנה.
הפונקציה מקבלת או הסטורט פרוסיג'ר מקבלת ארגומנט כל ארגומנט חייב להתחיל בשטרודל טקסט. מי שלא זוכר יכול להיזכר בפרקים שראינו על בניית מסד נתונים בתחילת הקורס.
יש לנו כאן טקסט, הסוג שלו זה nvarchar. מאוד חשוב שהסוגים יהיו אותם סוגים, פחות או יותר, שהטבלה האמיתית מוגדרת בהם. זאת אומרת שאם אני מחפש לפי שם, לפי איזשהו שם של מתנה, ושם של מתנה מוגדר כ-x תווים, האמת אני לא זוכר כמה הוא מוגדר, בואו נחפש יש לנו פה גיפטס נעשה דיזיין ונראה
ששם של מתנה יכול להיות עד 100 תווים אז אותו סוג נתונים אני רוצה להגדיר בשאילתה שאני בונה בסטור פרסיג'ר שאני בונה בואו נשים את זה פה nvarchar בגודל 100 אז ויש לנו פה את הקוד עצמו Select all from gifts where name like ופה אנחנו רוצים להגדיר שרק אם השם מכיל את הטקסט שהתקבל אז אנחנו רוצים לבחור אותו.
איך אנחנו עושים מכיל? אז למדנו שיש בעצם אפשרות להשתמש ב-like עם wildcard זאת אומרת יש לנו כאן אחוז משורשר עם הטקסט, שאושר עם האחוז הזה ואז זה אומר שרק אם הוא מכיל את זה אז אנחנו בוחרים אותו בואו נחזיר את שני אלה לכאן יש לנו את הטקסט הזה בואו נייצר טקסט דומה עבור המחיקה של ה-Store Procedure נגדיר שאנחנו רוצים to drop SP השם של ה-SP היה Search Gifts נגדיר את זה
פה ואנחנו רוצים להכניס אליו drop procedure if exist והשם שלו זה search gifts בואו נסמן ונראה שהsearch gift מסומן בארבע מקומות זה אומר שהוא קיים כמו שצריך יש לנו שאילתא שמאפשרת לייצר stored procedure יש לנו שאילתא שמאפשרת לי למחוק stored procedure ואנחנו רוצים לגלם את השאילתות האלה במיגריישן שבנינו
שיוצרת structures נוספים אז אנחנו ניגשים וכאן אנחנו מוסיפים עוד פקודה, בואו נוסיף פקודה שיוצרת הפעם את ה-stored procedure המתאימה והפקודה הזאת מבצעת drop ל-stored procedure.
זאת יוצרת לנו את ה-view, זאת יוצרת את ה-stored procedure, מוחקת את ה-view, מוחקת את ה-stored procedure, אם אנחנו עושים up הם נוצרים, אם אנחנו עושים down הם נמחקים.
אנחנו רוצים להריץ מחדש את המיגרשן האחרונה,