DCSIMG
Entity Framework - שלמה גולדברג (הרב דוטנט)
Sign in | Join | Help

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

Browse by Tags

log4net and azure
11 December 11 10:03 AM | Shlomo | with no comments
בדרך כלל אני משתמש בתשתית log4net כדי לשמור לוגים, אני אוהב לשמור אותם אותם לקבצים ואני משתמש ב - RollingFileAppender. כמובן שכשעובדים עם windows azure אי אפשר לעבוד בצורה כזו, מכיוון שכדי לקרוא את הלוגים נצטרך להכנס למכונה ב - remote וגרוע מכך בדרך כלל יש יותר ממכונה אחת - מה שאומר שהלוגים נשמרים על מכונות שונות, וכמובן אחר restart שלהם לא יהיה זכר ללוגים. לכאורה הפיתרון הפשוט הוא לשמור אותם לבסיס נתונים או ל - storage, הבעייה עם בסיס נתונים שהתימחור שלו הוא לפי גודל - ולוגים יכולים לתפוס הרבה מקום...
דוגמאות בסיסיות לשימוש בשיטות השונות בגישה לבסיס נתונים
14 November 11 05:30 PM | Shlomo | 1 comment(s)
קבלתי שאלה כיצד מתחברים לבסיס נתונים ב - net. כמובן שהפתרון גדול מידי עבור מסגרת הזו, אבל בכל זאת אני אדגים כאן את הבסיס להתחברות בכל השיטות. חשוב לזכור שפוסט זה הינו דוגמא בסיסית ביותר לגישה בכל השיטות ולא לימוד מעמיק של כל אחת מהם. (אני מתנצל מראש שהדוגמאות בפוסט זה הם ב - vb.net ולא ב - #C) להורדת הדוגמאות בפוסט זה הקדמה: כדי לגשת לבסיס נתונים מ - net קיימים (בעיקר) שלוש דרכים. הראשונה והבסיסית היא כמובן ado.net . השנייה היא גישה בעזרת dataset, typed dataset. והשלישית היא orm כשהשיטות העיקריות...
Delete Entity - Entity Framework (4.0 - 4.1)
30 October 11 11:20 AM | Shlomo | with no comments
העבודה עם Entity Framework הקילה עלינו את החיים וחסכה מאיתנו את הצורך לכתוב שכבת DAL. אחד הדברים שהיינו דואגים לעשות ב - DAL היה למחוק שורה במידה והקשר נמחק - כלומר במידה ויש לנו אובייקט Company המכיל הצבעה לאובייקט Hit, במידה והקשר נמחק (כלומר Company מצביע ל - Hit אחר) ה - Hit המקורי אמור להמחק. ב - Entity Framework גרסה 4.0 זה די פשוט. ראשית נמצא את האובייקט שנרצה למחוק var obj = context.Companies.First().Hit; כעת במידה והקשר מוגדר EndOnDelete - Cascade (ב - designer של Entity Framework על הקשר...
Detach and Attach - Entity Framework
11 May 11 02:43 PM | Shlomo | 2 comment(s)
מצב סביר בעולם ה - web. משתמש ביצע לוגין. הבאנו את המידע שלו בעזרת EF, (המידע שלו מכיל אובייקט - נניח קוראים לו User - שמכיל הפנייה לאובייקטים אחרים) שמרנו אותו ב - Session אבל לא שמרנו את ה - Context מכיוון שלא רצינו לשמור על connection פתוח כל הזמן. כעת עשינו שינוי כלשהו באובייקט ונרצה לשמור אותו בבסיס הנתונים. אם נעשה את השינוי ישירות באובייקט ששמרנו בזיכרון, לא נוכל לבצע SaveChanges על ה - context, מכייון שהאובייקט ששמרנו שייך ל - Context אחר (שכבר נעלם). אם נעשה את השינוי בבסיס הנתונים נצטרך...
is of a type that is invalid for use as a key column in an index - Entity Framework
04 May 11 09:48 PM | Shlomo | with no comments
במידה ואתם משתמשים בשיטת Empty Model ב - EF, והגדרתם עמודה מסוג string שתהיה Primary Key, סביר להניח שבזמן שתעשו Generate database from model תקבלו את הודעת השגיאה: Column 'Id' in table 'Entity1Set' is of a type that is invalid for use as a key column in an index. כדי לפתור זאת חפשו את הגדרת העמודה בסקריפט שנוצר הוא יהיה כנראה מסוג: nvarchar(max) במקום הערך max הגדירו ערך הגיוני אחר ונסו שוב להריץ את הסקריפט, כעת זה אמור לעבוד.
Entity Framework include sub path in query
09 January 11 12:47 PM | Shlomo | 2 comment(s)
כיצד להביא בבת אחת בעזרת Entity Framework את כל האובייקטים הקשורים. (גם את תתי האובייקטים) כידוע EF מביא את האובייקטים הקשורים לאובייקט שלנו בזמן שנצטרך אותם, וכדי לשכנע אותו בכל זאת להביא את כל האובייקטים בזמן השאילתא נצטרך להשתמש בפונקצייה Include context.Owners.Include( "Subjects" ).First(x => x.OwnerKey == ownerKey); במידה ולאובייקט Subject יש גם אובייקטים שנרצה להביא אותם בזמן השאילתא הראשית - נכתוב קוד כזה context.Owners.Include( "Subjects" ).Include( "Subjects.SubSubjects"...
Local query in Entity Framework
16 May 10 12:06 PM | Shlomo | 2 comment(s)
איך להריץ שאילתות ב - Entity Framework על ה - context ולא לרוץ לבסיס הנתונים. (הקרדיט של הפוסט הזה שייך לאחי יוסי גולדברג ) בעייה: כלל ידוע ב - Entity Framework שכל הפעלה של פונקצייה מתבצעת בבסיס הנתונים. יכול להיות שזה טוב ויכול להיות שלא, אבל זה מביא אותנו לבעייה הבאה. נניח שאנחנו נותנים למשתמש את היכולת להוסיף מידע באמצעות Entity Framework אבל אנחנו לא עושים SaveChanges בכל פעם שהמשתמש מוסיף שורה וכתוצאה מכך בפעם הבאה שננסה להביא את הנתונים (נניח לקשר אותו לגריד) המשתמש לא יראה את השורה שהוא הוסיף...
Delete object in Entity Framework
24 April 10 11:28 PM | Shlomo | with no comments
אם תנסו למחוק אובייקט ב - collection ב - entity framework בעזרת remove בצורה הבאה Lecture lecture = entities.Lectures.Include( "SelaRelatedCourses" ).First(); lecture.SelaRelatedCourses.Remove(lecture.SelaRelatedCourses.ElementAt(0)); אתם יכולים לקבל הודעת שגיאה בהסגנון הזה A relationship is being added or deleted from an AssociationSet 'FK_Relatedcourses_Lecture'. With cardinality constraints, a corresponding 'SelaRelatedCourses' must also be added or deleted. כדי למחוק...
Unable to update the EntitySet '[TableName]' because it has a DefiningQuery and no <InsertFunction> element exists in the <ModificationFunctionMapping> element to support the current operation
23 April 10 11:33 AM | Shlomo | 1 comment(s)
היה לי בבסיס הנתונים קישור פשוט של רבים לרבים מבחינת האובייקטים ב - Entity Framework זה נוצר בצורה הזאת הקשר בין הרצאה לתגים הוא רבים לרבים. כשניסיתי לכתוב את הקוד הזה Lecture lecture = entities.Lectures.First(); Tag tag = new Tag () { Name = "acbd" }; lecture.Tags.Add(tag); entities.SaveChanges(); קבלתי את ההודעה הבאה Unable to update the EntitySet 'TagLecture' because it has a DefiningQuery and no <InsertFunction> element exists in the <ModificationFunctionMapping>...
Entity Framework - Part 5
17 November 09 07:24 PM | Shlomo | 7 comment(s)
אז בפרק האחרון דברנו על מה ה - designer עושה מאחורי הקלעים עבור הסכמה שלנו, אפשר להאריך בנושא הסכמה עוד הרבה, אבל חשבתי שכדאי קצת לראות קוד ואיך לעבוד עם ה - EF ואחרי זה נסבך קצת את הסכמה. היות שבסיס הנתונים שלנו כרגע ריק - אנחנו נכתוב קוד שיכניס בו נתונים ונדון בכמה נושאים. כדי לעבוד עם EF אנחנו חייבים לייצר מופע של מחלקה שיורשת מ - ObjectContext במקרה שלנו EFLabEntities, using ( EFLabEntities context = new EFLabEntities ()) { } במקרה שלנו יהיה חכם לעשות את זה עם using כי אנחנו רוצים לייצר את ה...
Entity Framework - Part 4
04 November 09 06:41 PM | Shlomo | 4 comment(s)
בפרק הקודם ראינו את ה - xml שנוצר מאחורי הקלעים והבנו מה המשמעות של האלמנטים ואיך הוא מקשר בין המבנה של בסיס הנתונים לבין מבנה האובייקטים. בפרק הנוכחי נראה את הקוד שמתחולל כתוצאה מהמודל. תזכורת: יש לנו ישות אחת שנראת כך: כשפתחנו את קובץ ה - edmx ב - xml editor ראינו שהוא למעשה קובץ xml. לקובץ הזה יש קובץ נוסף שנקרא Model.Designer.cs - כשנפתח אותו נראה הרבה קוד - ונסביר אותו. החלק הראשון הוא מחלקה שיורשת מ - ObjectContext public partial class EFLabEntities : ObjectContext { public EFLabEntities()...
Entity Framework - Part 3
29 October 09 02:20 PM | Shlomo | 1 comment(s)
בפרק הקודם הגענו למצב שיש לנו טבלה אחת שממופה לטבלה כהמאפיין InternalGender הוגדר כ - private והוספנו partial class כדי לחשוף אותו כ - enum public enum UserGender { Male, Female } public partial class User { public UserGender Gender { get { return ( UserGender ) this .InternalGender; } set { InternalGender = ( int ) value ; } } } נפתח את המודל בעזרת XmlEditor מומלץ לסדר את ה - xml על ידי לחיצה על Format the whole document. (צירוף המקשים Ctrl+e+d) לאחר מכן נלחץ קליק ימין בעכבר ונבחר ב - Outlining...
Entity Framework - part 2
25 October 09 09:48 AM | Shlomo | 6 comment(s)
נמשיך בלימוד על Entity Framework. בפרק הזה נייצר את הישות הראשונה שלנו כמובן שנעשה זאת ידני - לאחר שנבין את הקוד וה - xml שנוצרים נוכל לייבא את שאר הטבלאות שלנו בצורה אוטומטית ורק לשנות את מה שצריך, במקום לייצר ידנית את הישויות. בפרק הקודם אמרתי שנדגים את העבודה מול northwind - בסופו של דבר אני חושב שאני מעדיף לייצר DB כלשהו שדרכו אוכל לשקף את התובנות שלי על EF, ולא להשתמש ב - DB קיים שאני צריך לכתוב את הישויות לפי המבנה שלו. נחזור בקצרה על התהליך שעשינו בפרק הקודם. תוכלו להוריד את ה - DB עבור הפרק...
Entity Framework - Part 1
23 October 09 11:59 AM | Shlomo | 3 comment(s)
כמו שהבטחתי אנחנו נלמד כאן ביחד מהשלב הראשון איך לעבוד עם Entity Framework. לצערי אני לא יכול להדגים כאן את העבודה מול ה - DB האמיתי שאני עובד מולו, לכן ההדגמה שלנו תהיה על בסיס נתונים ישן ואהוב בשם Northwind . אז מתחילים. נפתח Visual Studio ונייצר פרויקט Asp.NET Web Application בשם EntityFrameworkLab. קליק ימין על הפרויקט לחיצה על Add New Item ונבחר ב - ADO.NET Entity Data Model. נקרא למודל שלנו בשם NorthwindModel אחרי ההוספה נקבל מסך שבו נצטרך לבחור האם לייצר מודל מתוך בסיס נתונים או לייצר מודל...
המדריך למתחיל עם - Entity Framework
20 October 09 10:32 AM | Shlomo | 3 comment(s)
וידוי קטן. ברגע זה כלומר כשאני מתחיל לכתוב על EF אין לי שמץ של מושג בעבודה מול EF, יצא לי לשמוע פה ושם הרצאות (בעיקר ב - User Group וכד') על כמה טוב ונחמד לעבוד עם EF, אבל בפועל עד היום לא באמת יצא לי לעבוד עם הטכנולוגיה. אני חייב להודות זה נשמע לי מגניב לגמרי - הרעיון שאני לא צריך להתעסק עם שאילתות ולתת למישהו לעשות את כל העבודה (למעשה גם לא עבדתי עם Linq To SQL). אני מתחיל בימים אלו פרויקט חדש (פנימי) בסלע והדרישה שעלתה שם לעבוד עם EF. מבחינתי זה מעולה - אני תמיד שמח ללמוד טכנולוגיות חדשות...