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...
אין תגובות

background-position RTL jQuery plugin

25 באוקטובר 2011

כיצד להגדיר background-position כשמדובר באתרים עם rtl ?    התחלתי לעצב אתר כשקבלתי עיצוב מותאם לאנגלית והייתי צריך לשנות אותו לעברית,   על ההתחלה נתקלתי בבעייה הבאה:   נקח לדוגמא את ה - css הבא:     body {     background-image: url('Penguins.jpg');     background-repeat: repeat-y;     background-position-x: 30px; }   css פשוט ביותר שיגרום לתמונה מסויימת להתחיל בשלושים פיקסל ימינה, מה יקרה עם נוסיף את השורה הבאה:     direction: rtl;   האתר יעבור לצד ימין, כשתמונת הרקע נשארה תקועה בצד שמאל, בעוד שהכוונה כרגע שמצד ימין של האתר יהיה רווח של שלושים פיקסל לשמאל.   (פתרון ביניים הוא לעבוד באחוזים (95%) אבל במקרה כזה מיקום התמונה עלול להשתנות בשינוי גודל החלון) ב - css3 כבר תיקנו את הבעייה על ידי הקוד...
תגיות: , , , , , , ,
אין תגובות

File Upload: Cannot access a closed file.

  אם יצא לכם לכתוב פקד המאפשר להעלות קבצים לשרת, שומר אותם ב - Session ומתי שהוא תנסו לקרוא את התוכן של הקבצים, ייתכן שתקבלו את השגיאה:   Cannot access a closed file.   (הורדה של קוד מקור).   בפוסט זה אני אדגים כתיבה של פקד כזה (פקד פשוט מאוד - עבור הדוגמא) וכיצד לפתור את הבעייה.   נכתוב דף בשם uploader.aspx,   קוד ה - html:   <form id="form1" runat="server"> <div>     <asp:FileUpload runat="server" ID="fu1" />     <asp:Button Text="Upload" OnClick="upl_click" runat="server" /> </div> </form> קוד צד שרת:   protected void upl_click(object sender, EventArgs e) {     List<HttpPostedFile> list = (List<HttpPostedFile>)Session;     if (list == null)     {         list = new List<HttpPostedFile>();         Session = list;     }       list.Add(Request.Files);       Response.Write("<script>parent.uploaded('" + Request.Files.FileName +...
תגיות: , , , , ,
תגובה אחת

Cast from Generic type

23 באוקטובר 2011

  אחד הדברים המפריעים בעבודה עם Generic Type, שאי אפשר לעשות להם casting לאובייקטים אחרים, לדוגמא:   static void MyFunc<T>(T item) {     Work((Entity)item); }   static void Work(Entity item) {   }   הקוד הא יזרוק שגיאה של:   Cannot convert type 'T' to 'ConsoleApplication1.Entity'   כדי לבצע בכל זאת המרה בין האובייקטים ניתן להשתמש ב - Convert.ChnageType בצורה הבאה:   static void MyFunc<T>(T item) {     Work((Entity)Convert.ChangeType(item, typeof(Entity))); }     כדי לחסוך קצת זמן ולכתוב קוד בצורה יפה יותר, כתבתי את ה - Extension Method הבא   public static class ObjectExtension {     public static T ChangeType<T>(this object obj)     {         return (T)Convert.ChangeType(obj, typeof(T));     } }     וכעת ניתן לכתוב קוד כזה:   static void MyFunc<T>(T item) {     Work(item.ChangeType<Entity>()); }      
תגיות: , ,
3 תגובות

שליחת מערך של מחרוזות ב – GET לשירות שנכתב ב – WCF המוגדר לעבודה עם REST

11 באוקטובר 2011

    באחד הפוסטים בסדרת WCF הראיתי כיצד ניתן להגדיר שירותי WCF שיעבדו ב - REST ונוכל לגלוש אליו מהדפדפן בעזרת GET.   לפעמים אנחנו צריכים לקבל כפרמטר מערך של מחרוזות, במידה ונעשה את זה נקבל את השגיאה המפורטת, מה שאומר שהוא לא יודע כיצד להמיר את ה - query string למערך של מחרוזות.   Operation 'OPERATION' in contract 'CONTRACT' has a query variable named 'VARIABLE' of type 'System.String', but type 'System.String' is not convertible by 'QueryStringConverter'.  Variables for UriTemplate query values must have types that can be conve   מצאתי את הפתרון כאן, הרעיון הוא להגדיר Converter משלנו שיידע להמיר את ה - query string למערך של...
תגיות: ,
2 תגובות

Web Project Development

10 באוקטובר 2011

  בתפוז עלתה שאלה שקשורה לעבודה עם ה - Development Server, בפוסט זה אני אעבור בקצרה ובהמהירות על האופציות השונות.     כשעובדים עם פרוייקט web כדי להריץ אותו צריך שרת שיודע להאזין לבקשות ולהחזיר תשובות, כל ההגדרות בנושא נמצאים במאפייני הפרוייקט בטאב Web         אופציית ברירת המחדל היא עבודה עם השרת הפנימי של Visual Studio, וזהו החלון הצהוב הקופץ כל פעם מצד ימין בשורת המשימות         כברירת מחדל הוא מקבל כל פעם פורט רנדומלי אחר, במידה ועובדים עם השרת הזה עדיף תמיד לשנות אותו ל - Specific Port ולהגדיר אחד כזה.     האופצייה המועדפת עלי, היא לסמן את Use Local IIS Web Server, אני מעדיף את שיטת העבודה הזו...
תגיות: , ,
2 תגובות

List with main item

9 באוקטובר 2011

  הרבה פעמים יש לנו List של אובייקטים שאחד מהם אמור להיות האובייקט הראשי, לדוגמא רשימת טלפונים, רשימת אנשי קשר וכדומה.   כדי לתמוך בזה בקלות בלי להצטרך בכל פעם לכתוב פונקצייה המחזירה את האובייקט הראשי כתבתי את הקוד הבא:   public interface IItemWithMain {     bool IsMain { get; set; } }   public class ListWithMain<T> : List<T> where T : IItemWithMain {     public T MainItem     {         get         {             return this.FirstOrDefault(x => x.IsMain);         }         set         {             var mainItem = MainItem;             if (mainItem != null)             {                 mainItem.IsMain = false;             }              ...
תגיות: ,
אין תגובות

יצירת Controller עם מתודות המכילות Actoin Name משותף

5 באוקטובר 2011

  (פוסט זה נכתב בעזרת חיים בריקמן - אחד האנשים המוכשרים ביותר שאני מכיר)     נניח שאתם רוצים לכתוב Controller עבור Orders המכיל מתודות לשליפה ועדכון נתונים, והדרישה היא שהפנייה תהיה עם אותו Action Name וה - Controller יזהה את המתודה המתאימה לפי סוג הפנייה (GET, POST, PUT, DELETE)   נקח לדוגמא את הקוד הבא:   // SELECT public ActionResult Index(int id) {     return Content("GET /Orders/{id} | Orders"); }   // INSERT public ActionResult Index(OrderDTO order) {     return Content("POST /Orders | Insert new Order to Orders collection"); }   // UPDATE public ActionResult Index(OrderDTO order) {     return Content("PUT /Orders | Updates new Order in Orders collection"); }   //...
תגיות: , , ,
אין תגובות

שליחת ערך מסוג enum ל – Controller ב – asp.net mvc

4 באוקטובר 2011

  לאחרונה התחלתי לעבוד עם asp.net mvc, אני מגלה בו הרבה דברים מעניינים שאכתוב עליהם בתקופה הקרובה,    במשימה האחרונה שלי ניסיתי לכתוב action ב - controller שמקבל כפרמטר ערך עבור enum, הקוד היה נראה כך:   בצד ה - controller public enum MyEnum {     A = 0,     B = 1,     C = 2 }   public ActionResult Save(MyEnum myEnum) {     return Json(myEnum); }   בצד ה - view    <input type="button" value="Save" onclick="save()" />   <script>     function save() {         $.ajax(             {                 url: '@Url.Action("Save")',                 type: "post",                 data: '{myEnum : 2}',                 contentType: "application/json"             });       } </script>     לרוע המזל כל הזמן קבלתי את השגיאה...
תגיות: , , , ,
אין תגובות