MVC5 WebApi החרגת מאפיין ממחלקה חיצונית (EF Model) מהJson



  • נשאלתי איך להחריג מאפיין מJson שנוצר אוטומטית ע"י WebApi.
    אם זו הייתה מחלקה רגילה, אפשר לסמן את המאפיין ע"י הAttribute של JsonIgnore:

    public class Product
    {
        public int A { get; set; }
    
        [JsonIgnore]
        public int B { get; set; }
    }
    

    אבל הבעיה שהמחלקה בכלל לא אצלנו, כי היא נוצרת אוטומטית ע"י Model Designer של EntityFramework.
    אז בעצם אנחנו רוצים לעשות Atrribute למאפיין קיים במחלקה שרק הpartial שלה חשוף לנו.
    בדיוק אתמול @clickone הראה לי שיש לזה פתרון מעניין ע"י Attribute בשם MetadataType שבעצם מאפשר להצמיד מחלקה אחרת שהגדרות מאפייניה יוחלו על המחלקה הנוכחית אם השם והסוג תואמים.
    אז קודם צריך לאתר או ליצור מחלקת partial מתאימה למחלקה שלנו (אפשר ליצור אותה בכל מקום בפרוייקט רק לשים לב שהNamespace יהיה מתאים למקור), רק בשביל להצמיד את הAttribute האמור עם ההפניה למחלקה המתאימה ששם נעשה מאפיינים זהים למקור רק עם תוספת הJsonIgnore במקרה שלנו.
    הפתרון מתואר פה: https://stackoverflow.com/questions/3782405/can-i-define-properties-in-partial-classes-then-mark-them-with-attributes-in-an

    הנה דוגמה:

    [MetadataType(typeof(TheEntityName_ApplyAttributes))]
    public partial class TheEntityName { }
    
    public partial class TheEntityName_ApplyAttributes
    {
        [JsonIgnore]
        public int B { get; set; }
    }
    

    המחלקה TheEntityName היא שמה של המחלקה שנוצרת אוטומטית, שמתי בלוק ריק כי הדבר היחיד שאנחנו צריכים פה זה ההצמדה בין המJsonIgnore ששמתי למאפיין B של TheEntityName_ApplyAttributes, למאפיין B של TheEntityName שנוצר אוטומטית מהמודל.

    מקוה שיהיה שימושי 🙂


  • תכנות

    "נשאלתי"
    אני השואל הקטן

    שכוייח למורינו ורבינו רבי דוד שליט"א.



  • @ארכיטקט אמר בMVC5 WebApi החרגת מאפיין ממחלקה חיצונית (EF Model) מהJson:

    "נשאלתי"
    אני השואל הקטן

    שכוייח למורינו ורבינו רבי דוד שליט"א.

    היה שווה, כדי להחזיר אותך לפורום, אחרי שנה של חופש.. 🙂


התחבר כדי לפרסם תגובה
 

47
מחובר

1.8k
משתמשים

6.0k
נושאים

69.0k
פוסטים

סלולר כשר במחירים הנמוכים ביותר עם ובלי ניוד.

כנסו לאתר לקניה מקוונת, או בדקו סניף קרוב לביתכם.

מוצרים עם הנחה

לחצו פה כדי להגיע לרשימת מוצרים עם הנחה בקיאספי.

בהגעה דרך הלינק, ישנה הנחה בשלב התשלום בקופה!

בא תתחבר לדף היומי!