שינוי הקוד המיוצר על ידי Entity Framework

יום רביעי, אפריל 29, 2015

כשאנחנו משתמשים ב – Entity Framework,  לפעמים נרצה לשנות את ה – Auto Generated Code שהוא יוצר עבורנו, לדוגמא – אם ה – EF שלנו נראה כך:   הקוד שנוצר אוטומטית, נראה כך: Code Snippet public partial class BGPEntities : DbContext{    public BGPEntities()        : base("name=BGPEntities")    {    }        protected override void OnModelCreating(DbModelBuilder modelBuilder)    {        throw new UnintentionalCodeFirstException();    }        public virtual DbSet<City> Cities { get; set; }    public virtual DbSet<LoginHistory> LoginHistories { get; set; }    public virtual DbSet<User> Users { get; set; }}   מה קורה במידה ואנחנו רוצים לשנות את הקוד שנוצר, לדוגמה –...
תגיות: , ,
תגובה אחת

מספר דיאגרמות ב – Entity Framework

יום רביעי, אפריל 22, 2015

Entity Framework הינו אחד מהדרכים הקלות יותר לפתח בעבודה מול DB, אחד הפיצרים הנחמדים היא יכולת (כמו ב – DB) ליצור מספר דיאגרמות של אותו מודל.   ב – Model Browser יש Diagrams וניתן להוסיף דיאגרמות חדשות   שימו לב שאותו מודל (Student) מופיע בשני דיאגרמות שונות.
תגיות: ,
אין תגובות

Enums on client side of WCF Data Services

יום רביעי, מרץ 26, 2014

לאחרונה יצא לי להתעסק עם WCF Data Services – אחד הדברים שהציקו לי היה העבודה עם enum, אמנם החל מ – Entity Framework 6 יש תמיכה ב – enums במודל, אבל לא בעבודה עם DataServices, במידה והמודל יכיל Enum Type לא ניתן יהיה לבצע Add Service Reference. אחד הפתרונות שחשבתי לעשות הוא לכתוב בצד הלקוח קוד כמו זה: Code Snippet namespace DataCache.ServiceReference{    public partial class DegreeType    {        public EDegreeType EType        {            get            {                return (EDegreeType)this.Type;            }            set            {                this.Type = (int)value;            }        }    }    public enum EDegreeType    {                Before,                After    }} כך בצורה זו –...
3 תגובות

Entity Framework OrderBy (string)

יום שישי, אוקטובר 4, 2013

קוד רגיל לבקשת מידע מבסיס נתונים בעזרת Entity Framework יראה כך: Code Snippet g1Entities model = new g1Entities(); var res = model.Persons.OrderBy(x => x.FirstName);   לפעמים נרצה לקבל מהמשתמש את שם העמודה לפיה למיין, במקרה כזה...
תגיות: , ,
אין תגובות

שימוש והפעלה בסיסית של שאילתות SQL רגילות ב–Entity Framework בעזרת Functions

יום ראשון, אוגוסט 26, 2012

בפוסט הקודם הראיתי כיצד להפעיל קוד sql ישירות בעזרת entity framework, בפוסט זה נכיר את מנגנון ה – functions המיוחד של EF. ראשית נשנה טיפה את בסיס הנתונים (נוסיף עוד עמודות לטבלה)   כעת נכתוב SP בבסיס הנתונים שתקבל את ה – Id כפרמטר, ותחזיר את השם ואת שם המשפחה של כל מי שה – Id שלו גדול מהערך שהתקבל. (הסיבה שהוספתי עוד עמודה, מכיוון שאני רוצה להדגים בפוסט הזה את העבודה עם Complex Type) לאחר שה – SP קיים...
תגובה אחת

שימוש הפעלה בסיסית של שאילתות SQL רגילות ב–Entity Framework

יום שישי, אוגוסט 24, 2012

לפעמים גם כשאנחנו עובדים עם Entity Framework עדיין נרצה להפעיל שאילתות SQL או stored procedure כלשהו. בפוסט זה נראה כיצד לשלוח שאילתות בסיסיות לבסיס הנתונים בעזרת Native Sql, בפוסט הבא נראה כיצד אפשר לעשות זאת בעזרת מנגנון מיוחד הנקרא Functions. להורדת דוגמת הקוד ובסיס הנתונים. כך נראה בסיס הנתונים שלי:   נייצר עבורו מודל של Entity Framework ונרצה להפעיל שאילתות עליו (או הפעלה של SP). ישנם שני פונקציות עיקריות, אחת ExecuteStoreCommand, מתודה זו מאוד...
אין תגובות

טקסט בעברית הופך לסימני שאלה בשאילתות מול בסיס הנתונים

יום שלישי, יולי 3, 2012

כידוע לכולם כדי שנוכל להכניס בבסיס הנתונים תווים לא באנגלית (עברית למשל) השדות צריכות להיות מוגדרות כ – nvarchar, ולא כ – varchar. ולכן מה רבה הייתה הפתעתי שכששלחתי שאילתא לבסיס הנתונים (הפעלה של stored procedure באמצעות Entity Framework) כשבמשפט Where נשלחו תוים בעברית – לא קבלתי שום תוצאה, לאחר שפתחתי את ה – Sql Profiler גיליתי שהתווים נשלחו כסימני שאלה (אע"פ שבבסיס הנתונים עצמו התווים היו בעברית). לחיצה ימנית על בסיס הנתונים ובחירה במאפיינים הראתה לי משהו מעניין.   ...
3 תגובות

log4net and azure

יום ראשון, דצמבר 11, 2011

  בדרך כלל אני משתמש בתשתית log4net כדי לשמור לוגים, אני אוהב לשמור אותם אותם לקבצים ואני משתמש ב - RollingFileAppender.   כמובן שכשעובדים עם windows azure אי אפשר לעבוד בצורה כזו, מכיוון שכדי לקרוא את הלוגים נצטרך להכנס למכונה ב - remote וגרוע מכך בדרך כלל יש יותר ממכונה אחת - מה שאומר שהלוגים נשמרים על מכונות שונות, וכמובן אחר restart שלהם לא יהיה זכר ללוגים.     לכאורה הפיתרון הפשוט הוא לשמור אותם לבסיס נתונים או ל - storage, הבעייה עם בסיס נתונים שהתימחור שלו הוא לפי גודל - ולוגים יכולים לתפוס הרבה מקום, מצד שני עבור storage משלמים לפי מספר טרנזקציות - ואם כותבים הרבה...
אין תגובות

דוגמאות בסיסיות לשימוש בשיטות השונות בגישה לבסיס נתונים

יום שני, נובמבר 14, 2011

  קבלתי שאלה כיצד מתחברים לבסיס נתונים ב - net.   כמובן שהפתרון גדול מידי עבור מסגרת הזו, אבל בכל זאת אני אדגים כאן את הבסיס להתחברות בכל השיטות. חשוב לזכור שפוסט זה הינו דוגמא בסיסית ביותר לגישה בכל השיטות ולא לימוד מעמיק של כל אחת מהם.   (אני מתנצל מראש שהדוגמאות בפוסט זה הם ב - vb.net ולא ב - #C)   להורדת הדוגמאות בפוסט זה     הקדמה:  כדי לגשת לבסיס נתונים מ - net קיימים (בעיקר) שלוש דרכים.   הראשונה והבסיסית היא כמובן ado.net.   השנייה היא גישה בעזרת dataset, typed dataset.   והשלישית היא orm כשהשיטות העיקריות הם nhibernate, entity framework.     ado.net: ado.net היא השיטה הבסיסית שכל השיטות מאחורי הקלעים עובדים איתה, מדובר על פתיחת...
תגובה אחת

Delete Entity – Entity Framework (4.0 – 4.1)

יום ראשון, אוקטובר 30, 2011

  העבודה עם Entity Framework הקילה עלינו את החיים וחסכה מאיתנו את הצורך לכתוב שכבת DAL.   אחד הדברים שהיינו דואגים לעשות ב - DAL היה למחוק שורה במידה והקשר נמחק - כלומר במידה ויש לנו אובייקט Company המכיל הצבעה לאובייקט Hit, במידה והקשר נמחק (כלומר Company מצביע ל - Hit אחר) ה - Hit המקורי אמור להמחק.     ב - Entity Framework גרסה 4.0 זה די פשוט.   ראשית נמצא את האובייקט שנרצה למחוק   var obj = context.Companies.First().Hit;   כעת במידה והקשר מוגדר EndOnDelete - Cascade (ב - designer של Entity Framework על הקשר) חייבים לפני המחיקה למחוק ידנית את הקשר (אחרת זה ימחק גם את ה - Company)   context.Companies.First().Hit...
אין תגובות