EF core code first הדרך הנכונה לכתוב ולעדכן קשר של רבים לרביםדכן אותואותו
-
אני כותב פרויקט בעזרת ef core בשיטה של code first.
ובו שחקן יכול להשתתף בהרבה משחקים ומשחק מכיל הרבה שחקנים- בקיצור, קשר של many- to- many. יש שתי שיטות לכתוב את המחלקות--
ליצור קלאס שקוראים לו GamePlayer- זה מכוער לפי דעתי, והורס את הרעיון של code first שבעצם יוצר את הטבלה הזו בכוחות עצמו.
-
הקלאס Game יכיל ליסט של Players וה Player יכיל ליסט של Games. זה יותר יפה אבל נתקלתי בבעיה בעדכון טבלת הקשר שהרי אין לי גישה אליה, אלא צריך לעדכן את המשחק ולהוסיף לליסט שלו שחקן. זה בסדר אם אני מוסיף שחקן חדש למערכת אבל כשאני רוצה להוסיף את השחקן שכבר קיים במערכת- למשחק, הוא בעצם מנסה להוסיף אותו שוב לטבלה של ה Players ולא רק לטבלה GamePlayer.
ניסיתי להשתמש בשיטה הזו
_context.Players.Attach(player);
שמחברת את השחקן למסד נתונים וכך הוא מבין לא להוסיף אותו.
זה עזר רק באובייקט בודדים שמוכלים בתוך אובייקט - קשר של יחיד לרבים אבל לא לרבים לרבים. איך מעדכנים קשר חדש בין אובייקטים ישנים בטבלת רבים לרבים? -
-
@pancake כתב בEF core code first הדרך הנכונה לכתוב ולעדכן קשר של רבים לרביםדכן אותואותו:
אבל כשאני רוצה להוסיף את השחקן שכבר קיים במערכת- למשחק, הוא בעצם מנסה להוסיף אותו שוב לטבלה של ה Players ולא רק לטבלה GamePlayer.
זה לא אמור לקרות.
אתה צריך לטעון את השחקנים בעזרת אותו קונטקסט, ואם הם כבר קיימים מחוץ לקונטקסט הattach אמור לעבוד (אבל צריך להריץ אותו על כל שחקן).
תרחיב על הבעיה, ותציין איזה EF מדובר (6/CORE). -