Change Entity Framework storage DB schema in runtime

August 22, 2008

When you build a EF schema, it automatically plant the name of the imported tables schema into the EDMX file. But alas, what happens when you work in different environments (such as Dev, Test, Prod...) and in each database, the schema of the tables is different? Basically you either reset all your databases to use the same schema or worse - change the EDMX and recompile the assembly before updating the wanted environment. But there is another solution, not a clear one, probably not a supported one, but still, it works. Every EF model is accompanied by metadata,...

עוד קצת AJAX לא הזיק לאף אחד

August 20, 2008

כפי שרשמתי בפוסט קודם, ב-15/9 אני אעביר הרצאה בנושא AJAX ו-Entity Framework. ההרצאה על AJAX תהיה ברמת סקירה של הטכנולוגיה והיכולות שלה, אך למי שמעוניין בהרצאה קצת יותר מעמיקה (רמת Deep Dive), אני אעביר הרצאה שכזו בכנס המפתחים של סלע, אשר יתקיים בין התאריכים 22-25 לספטמבר (ההרצאה שלי תהיה ב-22 לספטמבר). ההרצאה תעסוק בסקירה מעמיקה של איך טכנולוגיית AJAX עובדת (מי ש-Javascript עושה לו בחילה מומלץ שיבוא עם כדורי פראמין ושקית הקאה) והצגה של אפשרויות ההרחבה לרכיבים הקיימים והאופן בו יוצרים רכיבים חדשים בסביבה.
no comments

Entity Framework and Lazy Loading

I've received a couple of request to write some of my previous posts in English so that all other 99.7% of the developers community in the world which finds these subjects interesting can understand what I'm writing. The following post is a translation to English of this Hebrew post. When Entity Framework (EF for short) was designed, Microsoft decided the loading of entities will be during run-time in a JIT like mechanism. They achieved this by using the lazy loading technique - access the database and load the entity for the first time only when someone asks for...

מה משותף ל-Entity Framework ו-AJAX ?

August 16, 2008

בכללית, שתיהן טכנולוגיות שהן "תוספות" לתשתית המוכרת - Ado.Net Entity Framework ו-Asp.Net AJAX. בפרט - כל אחת מהטכנולוגיות באו לענות על צורך שהיה חסר: EF באה לענות על מחסור בכלי ORM מיקרוסופטי (לאלו שאינם נוטים להשתמש בכלים צד שלישי) ו-AJAX בא לפתור בעיה חמורה שהיתה בביצועים של אפליקציות ASP.NET. המצחיק הוא, אגב, ששתי טכנולוגיות אלו לא ממש עובדות טוב ביחד. ב-15/9 אני אעביר הרצאה על כל אחת מהטכנולוגיות בפורום מפתחי דוטנט צה"ל לאלו מכם שעדין לובשים מדים, והנושאים מעניינים אתכם, אתם מוזמנים להרשם.
no comments

Serializing Expression Trees

August 9, 2008

אחד מהדברים השימושיים ב-3.0 #C, אע"פ שהוא מעט הוזנח במצגות השונות, הוא עץ הביטויים (Expression Tree) שהוא הדבק שמחבר את Lambda Expressions ו-Linq. מאחר ובאמצעות Expression Tree אפשר לייצג ביטוי לוגי, מצאתי לו שימוש במערכת בה הביטויים הלוגיים הם דינאמיים, המבנה שלהם נשמר ב-DB והם צריכים להיבנות ולהיבדק בזמן ריצה. אבל... בדבר אחד Expression Tree נכשל - אי אפשר לבצע לו סריאליזציה. הדבר מוסבר בפורומים השונים, כדוגמת כאן, והסיבות נשמעות די הגיוניות: המחלקות השונות של Expression Tree מכילות מאפיינים מטיפוסי Reflection (מחלקות Type, MemberInfo וכדומה) - טיפוסים אלו בעייתיים לסריאליזציה. Expression Tree הוא Immutable, היינו מרגע שנוצרו...
2 comments

שמות Properties כמחרוזות – חלק 2

August 4, 2008

להלן בעיה - בהנתן Property כלשהו, נניח ששמו FirstName, עליכם להעביר למתודה את שם ה-Property כמחרוזת, תחת המגבלות הבאות: אינכם יכולים לרשום במפורש את שם ה-Property כמחרוזת ("FirstName") אינכם יכולים להשתמש ב-GetProperties, איכשהו לאתר את ה-PropertyInfo ולחלץ את שמו ממאפיין Name (לדוגמה - איתור ה-PropertyInfo הראשון שמתחיל ב-F ואורך שמו הוא 9) לפני כשנתיים נתקלתי בבעיה זו, כאשר וחיפשתי דרך לפתור את הבעיה שהוצגה בפוסט הקודם - העברה של שמות מאפיינים למתודה וקבלת ערכיהם (אז לא עלה בדעתי להשתמש ב-delegate). פתרון לבעיה לעיל לא מצאתי והתשובה שקיבלתי מאנשי מיקרוסופט היתה - צור מאפיין מחרוזתי שיכיל את...

שמות Properties כמחרוזות

ברצוננו לכתוב מתודה אשר תקבל שם קובץ חדש ורשימת קבצים בתיקייה ותחזיר שם קובץ תקין שאינו קיים בתיקייה (כמו שיצירת קובץ חדש בתיקייה תחת וינדוס יוצרת קבצים בשם "new", "new1", "new2" וכו'). string GetUniqueFileName(List<File> files, string newFileName) נוכל לכתוב מתודה אשר עוברת על רשימת הקבצים בתיקייה (List כלשהו) ומחפשת עפ"י מאפיין שם קובץ (obj.FileName) אם השם תפוס ואם כן, להוסיף לשם שהועבר איזשהו Suffix ולנסות שוב עד למציאת שם תקין. עכשיו בואו נסבך - נניח שאנחנו רוצים עוד מתודה שכזו, הפעם על רשימה אחרת והשוואה מול מאפיין בשם אחר. חלקנו יכתוב עוד מתודה (copy&paste+שינויים קטנים), אבל יש דרך אחרת -...
no comments