Netwise English
אודות
הפילוסופיה שלנו
חדשות ואירועים
הלקוחות שלנו
ספריית מאמרים
Netwise Experts
ארכיון ניוזלטר
דרושים
צור קשר
הוראות הגעה
 
ספריית מאמרים לספריית מאמרים  לניוזלטר Netwise
מסתרי dot net 3.5 והפעם Linq
המאמר נכתב על ידי אריק וידר, טכנולוג בכיר בחברת Netwise. פברואר 2008
תקציר המאמר: אריק וידר, טכנולוג בכיר בחברת Netwise כותב מאמר מקיף על Linq ועל הניסיון לפשט תהליכי עבודה מול מסדי נתונים. במאמר מידע על ארבעת החידושים בגרסה שבלעדיהם לא ניתן להשתמש ב-Linq: VAR; Anonumous type; Extenstion methods; Lambda. וכן מידע מקיף על אופני שימוש ב- Linq, המטרות בפיתוח Linq, הקטגוריות העיקריות שלו, ביצוע שאילתות, פונקציות הרחבה ומידע חשוב נוסף ללומדים את הנושא.
הניסיון לפשט את העבודה חוצה מערכות, ארגונים וחברות ולא פוסח גם על מיקרוסופט העולמית. עבודה מול מסדי נתונים היא בדרך כלל מורכבת ומסועפת, לכן הניסיון לפשט אותה עומד בראש סדר העדיפויות של הענקית. אז האם השאילתות ב-SQL עומדות להיעלם? האם באמת נראה עבודה פשוטה יותר מול מסדי הנתונים?
בעוד זמן קצר תופץ גרסה חדשה לתשתית dot net של מיקרוסופט. הגרסה תכלול מספר חידושים ובהם (Language Integrated Query) Linq.
עוד לפני ה- Linq: ארבעה חידושים בגרסה
הגרסה החדשה כוללת מספר חידושים שבלעדיהם לא ניתן להשתמש ב-Linq.
שובו של ה-VAR
כותבי ה-javascript שביניכם ודאי מכירים את ה-VAR, אותו משתנה שיכול להכיל סוגי ערכים שונים ולבצע עליהם פעולות. בגרסה החדשה, dot net 3.5 ניתן להגדיר משתנה מסוג VAR, להציב בו ערך מטיפוס מסוים ולבצע בו את הפעולות הרצויות. חשוב לדעת, לא ניתן להחליף את סוג הערך המוצב ב-VAR. אחרי הצבת טיפוס הערך (למשל string), נקבל intellisense מלא למשתנה ה-VAR ואת כל המתודות של הטיפוס המוצב, כאילו שהיינו עובדים מלכתחילה עם משתנה מסוג string.
Var
Anonymous type
בגרסה החדשה, dot net 3.5 ניתן להציב טיפוסי (type) מידע בלתי מוגדרים מראש ב-VAR. בעת ההשמה הקומפיילר מייצר anonymous type. הוא גם יזהה סוגים זהים של טיפוסים.
Anonymous type
Extenstion methods
בעזרת פונקציונאליות זו ניתן להוסיף מתודות לכל טיפוס שהוא. נתמך גם על ידי sealed class, תומך ב-intellisense, ניתן לבצע overloading של מתודות קיימות.
Extention methods
הלמבדה (lambda)
הלמבדה היא צורת תחביר חדשה ב-C# שבעזרתה ניתן לכתוב פחות קוד ולהבין את הקוד טוב יותר.

התחביר של למבדה
Simple syntax:
parameter=>expression
multiple parameters
(p1,p2,…)=>expression
no parameters
()=>expression
multiple expressions
(p1,p2,…)=>{expression1;expression2;…}
למבדה
לומדים להשתמש ב- Linq
ה-VAR, הלמבדה, ה-Anonumous type וה ExtensionMethods- הם שמאפשרים לנו להשתמש ב-Linq.
המטרות בפיתוח Linq
לצמצם את הצורך לעבוד עם כלי פיתוח אחד עבור ה-DB וכלי פיתוח אחר עבור האפליקציה.
לצמצם את ההתמחות של מפתח האפליקציה בשפת ה-SQL.
ליצור אחידות בגישה לצורות אחסון שונות של מידע הקיימות באפליקציה (קבצי XML, מסד נתונים רלציוני ואובייקטים), והכול בשפה מועדפת על המפתח (C# ,VB .net וכדומה) תוך בדיקת שגיאות בקומפילציה, יכולות debug ,intellisense וכל שאר מנעמי התכנות המוכר.
הבסיס של Linq הוא סט של תבניות המאפשרות את הגמישות לגשת לכל סוגי המידע. התבניות הללו מציינות איך אובייקט יכול להפוך ל"שאיל" (quardable) ומאפשרות את כל פעולות התחקור המוכרות לנו
(select ,where ,grouping ,ordering ,joining).
באמצעות מימוש תבניות אלה יכול כל dataprovider להפך ל"שאיל".
שלוש הקטגוריות העיקריות של Linq
1. Linq to object: שאילתות מול אובייקטים בזיכרון
2. Linq to ado.net: שאילתות מול מסד הנתונים MS SQL, שאילתות מול dataset ושאילתות מול ישויות. בעזרת Linq to sql ניתן ל"מדל" את מסד הנתונים לאובייקטי Dot Net ואז לתשאל את מסד הנתונים בעזרת שאילתות של Linq ולבצע פעולות עדכון, הכנסה ומחיקה. קיימת גם תמיכה בטרנזקציות, views, ו-storedprocedures
3. Linq to XML: שאילתות מול מקור XML
שאילתה פשוטה ב-Linq תתחיל ב from- ומסתיים ב-select, ומבחינה זו מדובר בתחביר שונה ממה שהתרגלנו אליו ב-SQL.
דוגמת קול
ביצוע שאילתה על טבלה וקבלת חלק מהשדות בלבד
var worker = from w in Workers
select new {
     c.WorkerD, c.WorkerFirstName , c.WorkerLastName};
חיבור וחיסור – כל האופרטורים של SQL תקפים גם ב-linq
דוגמה
Linq to object תומך בכל האובייקטים המממשים את ienumarable
Linq to object תומך בכל האובייקטים המממשים את ienumarable ובכך ניתן להשתמש באופרטורים כדוגמת ,count ,average ,max ,min ,cast ,first ,last ,groupby ,orderby ורבים נוספים.
דוגמה 2
פונקצית הרחבה מקלה בביצוע paging
פונקצית הרחבה נחמדה מקלה עלינו בביצוע paging. קטע הקוד הבא בוחר 2 ספרים (Take) ומתחיל לקחת אותם (Skip) החל מהספר השני:
Paging
אם חזון מייקרוסופט יתממש, והמפתחים יתרגלו לתחביר של השפה השונה, יוקלו חיי המפתחים בצורה משמעותית. מכיוון שמדובר בקופסה שחורה יש לבחון האם השימוש בטכנולוגיה המתאימה מתאים לצרכים ולביצועים הדרושים ואת כל התשובות לתהיות הללו בוודאי נקבל בזמן הקרוב.
אתרים בנושא
http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx http://msdn2.microsoft.com/en-us/vcsharp/aa336746.aspx
 
שלח עמוד לחבר הדפס עמוד לראש הדף