LINQ to SQL והדרך שבה הוא עובד עם Stored Procedures
LINQ to SQL הוא כלי מאד נוח. ממש נוח. אבל, יש לו כמה מגבלות, והוא לא תמיד מאד חכם.
בואו נניח שיש לנו בדטאבייס איזשהו stored procedure, נניח, שמו X. כאשר, ה SP הזה, בסיומו, מריץ איזשהו משפט SELECT, שמחזיר ערכים, שמולם אני רוצה לעבוד מהקוד.
כאשר אני מוסיף את הSP ל L2SQL, בתהליך המיפוי, נוצר לי אובייקט בשם XResults, שמייצג את מבנה התוצאות שחוזר, ואיתו אפשר לעבוד.
עכשיו, בואו נניח שיש לנו Stored Procedure קצת יותר מסובך. כזה שבאמצע, יוצר איזושהי טבלה זמנית, ממלא אותה בנתונים, בסיומו שולף ממנה נתונים ועושה לה drop.אז, הוספנו אותו ל LINQ to SQL, ו.... הוא לא יצר אובייקט שמייצג את ה results. למען האמת, הוא בכלל לא מכיר בזה שמה stored procedure חוזר איזשהו מבנה נתונים. מבחינתו, הSP מחזיר int.
המסקנה - אם יש לכם SP, שאתם יוצרים בממהלכו איזושהי טבלה זמנית, ממלאים אותה, עובדים איתה ומוחקים בסוף - LINQ to SQL לא יכיר את זה. הפיתרון, להפוך את הטבלה הזמנית לקבועה ורגילה, שאז הוא מכיר אותה ויודע למפות את סט התוצאות שחוזר לאובייקט.
שחר.