תופעה מטרידה שנתקלתי בה הרבה היא שבחיפוש בגוגל אני מקבל תוצאות מ expert-exchange שזה אתר דומה לStackOverflow רק בתשלום. זה מטריד כי יש אפשרות לראות את השאלה אבל בשביל התשובה צריך לשלם…
לא מעוניין שהאתר הזה יופיע בכלל אצלי על המפה.
אז מסתבר שיש תוספים שיפתרו את הבעיה עבורנו…
שניהם אגב יעבדו רק בגוגל רגיל ולא בחיפוש המהיר החדש.
לIE לא מצאתי.
למי שמשתמש במקלדת מיקרוסופט, יש את הכפתור המעצבן (לטעמי) F Lock (אי שם מימין למעלה).
הכפתור הזה נועד למעשה לשכפל את התפקוד של שורת הFים.
הכפתור הזה מעצבן כי ברירת המחדל שלו היא כבויה כלומר אין Fים. יש פונקציות אחרות (Open,New וכו’).
מה שמציק הוא שכאשר מכבים את המחשב הוא שוב מתאפס ונשאר כבוי, ואז אני מוצא את עצמי לוחץ F5 לדיבאג וזה לא זז עד שלוחצים עליו.
אז זהו שיש לזה פתרון. לא נכנסתי לעומק העניין אבל ניתן למצוא את ההסבר
כאן.
בכל אופן שינוי קטן ברגיסטרי פותר את העניין לתמיד, למעשה הכפתור נשאר כבוי אבל התפקוד מתהפך.
בכפוף לסוג המקלדת המדוייק יש להשתמש בקובץ הנכון.
כאשר עושים Add service reference לשירות נתונים נוצרים אובייקטים חדשים המייצגים את המודל. זאת בנוסף לפרוקסי (אותו אנחנו בעצם רוצים) המכיל את הנקודות קצה לכל האלמנטים במודל.
בWCF – ישנה אפשרות לשימוש חוזר באובייקטים כאשר הן לשרת והן ללקוח יש קישור אליהן.

עכשיו נניח תצורה מסויימת של פרוייקט.
- רוצים לעבוד N-tier והתבנית הנוחה ביותר היא Self tracking object
- רוצים למנוע תלויות ב Entity framework – אז מזיזים את הישויות לפרוייקט נפרד.
- רוצים להשתמש בWcf Data services ע”מ לקבל אובייקטים מהשרת.
- רוצים להשתמש גם בשירותים אחרים של WCF כדי להחזיר אובייקטים לשרת (עדכון וכו’)
התצורה הזו אינה דמיונית, היא מאד הגיונית, לתשאל עם Data Services זה תענוג, אולם שאר הפעולות (עדכון,הוספה,מחיקה) בד”כ דורשות קצת יותר לוגיקה ממה שנוח לעשות עם Data Services.
הבעיה כמובן היא שגם אם ללקוח יש קישור לפרוייקט של הישויות תהיה לו כפילות של ישויות תחת Namespace אחר.
ב Tip 52 מוצגת שיטה שלמעשה מיצרת פרוקסי ידנית כדי לעקוף את הבעיה הזו. רק שיש בעיה עם הגישה הזו. זה ידני – כל שינוי בשמות, הוספת/הורדת ישויות מחייב עריכה ידנית.
לכן הוספתי תבנית TT עם שינויים קלים שעושה את העבודה עבורי.
מצ”ב פרוייקט לדוגמא.
נקודות לתשומת לב -
- ב TT של הcontext יש תוספת של הNamespace של הישויות (החדש אם הוא שונה)
- ישנו override בDataService כדי לאפשר לMetadata של השירות לעלות בצורה תקינה. אבל זה נושא לפוסט אחר.
- ב TT של הישויות צריך לתקן את הנתיב ל Edmx.
- יש להוסיף רפרנס ל - System.Data.Services.Client מכיוון שהפרוקסי יורש מDataServiceContext
- ב TT של צד לקוח יש לעדכן נתיב ל Edmx והnamspace לישויות.
- אם נוצר קובץ כפול ואחד עם “1” בסוף – זו איזו תקלה לא ברורה שניתן לתקן (זה רק מעצבן ויזואלית) אם נכנסים לקובץ של הפרוייקט ומשנים שם את הערך של LastGenOutput שיהיה בלי 1.