DataSet או DataTable
-
יש לך כמה טעיות.
א. הכלי של הData Source לא עושה Data Set אלא עשרות מחלקות שחלקם יורשות חלקם עוטפות מחלקות ADO רבות, שאחת מהן היא DataSet (ראה כל כל מחלקות אלו כאן: http://code.613m.org/viewtopic.php?f=1&t=155#p969). המחלקה DataSet דומה למחלקה DataTable, בעוד DataTable מייצגת טבלה דטה בייסית בזכרון, אז הDatSet מייצג מסד שלם שזה אומר בעיקר הקשרי גומלין. המחלקה DataSet אכן לא נצרכת כ"כ בעבודה מול טבלה בודדת, אבל נוחה בעבודה מול יותר מטבלה אחת, שיש ביניהם קשרים.
ב. המילים "הכל ידני עם ConnectionString" מביעות הנחה כאילו האוטומציה של הTyped Data Set חוסכת הקלדה מפורשת בקוד של ConnectionString. הגם שזה נכון, אבל זה ממש לא מטרתה, אלא העובדה שכל עמודה בטבלה מזוהה, וכל תא מיוצג ע"י מאפיין עם טיפסיות קשוחה (אי אפשר להזין טקסט במספר וכדומה). והTableAdapter ממולאים בשאילתות ובפרמטרים המתאימים. והביצוע כמו Fill מקבלים פרמטרים עם טיפוס וכו'.הייתי מסיק שעליך להעדיף תמיד את הTyped Data Set שזהו המחלקת Data Set המיוחדת שנוצרת ע"י האשף/דיזיינר של Data Source של הVS. אבל ההמלצה בלל לא תמיד נתנת ליישום. אם אתה רוצה לתשאל שאילתות דינמיות לפי קלט משתמש אתה חייב ליצור Command טקסטואלי לבד. ממילא גם DataTable רגיל בשביל לאכלס את התוצאות. כמו כן אם אתה מתעתד לפתוח DB באופן דינמי אז בכלל אין לך מה לחפש באשף הלז.
הדרך המודרנית ומומלצת של מקרוסופט כיום לגישה לנתונים מוכרים בזמן עיצוב, זה ע"י Entity Framwork.
שים לב שEF לא תומכת במסד אקסס.
פורסם במקור בפורום CODE613 ב14/07/2015 18:45 (+03:00)
-