דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. EF core code first הדרך הנכונה לכתוב ולעדכן קשר של רבים לרביםדכן אותואותו

EF core code first הדרך הנכונה לכתוב ולעדכן קשר של רבים לרביםדכן אותואותו

מתוזמן נעוץ נעול הועבר תכנות
3 פוסטים 2 כותבים 167 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • P מנותק
    P מנותק
    pancake
    כתב ב נערך לאחרונה על ידי
    #1

    אני כותב פרויקט בעזרת ef core בשיטה של code first.
    ובו שחקן יכול להשתתף בהרבה משחקים ומשחק מכיל הרבה שחקנים- בקיצור, קשר של many- to- many. יש שתי שיטות לכתוב את המחלקות-

    1. ליצור קלאס שקוראים לו GamePlayer- זה מכוער לפי דעתי, והורס את הרעיון של code first שבעצם יוצר את הטבלה הזו בכוחות עצמו.

    2. הקלאס Game יכיל ליסט של Players וה Player יכיל ליסט של Games. זה יותר יפה אבל נתקלתי בבעיה בעדכון טבלת הקשר שהרי אין לי גישה אליה, אלא צריך לעדכן את המשחק ולהוסיף לליסט שלו שחקן. זה בסדר אם אני מוסיף שחקן חדש למערכת אבל כשאני רוצה להוסיף את השחקן שכבר קיים במערכת- למשחק, הוא בעצם מנסה להוסיף אותו שוב לטבלה של ה Players ולא רק לטבלה GamePlayer.
      ניסיתי להשתמש בשיטה הזו

    _context.Players.Attach(player);
    

    שמחברת את השחקן למסד נתונים וכך הוא מבין לא להוסיף אותו.
    זה עזר רק באובייקט בודדים שמוכלים בתוך אובייקט - קשר של יחיד לרבים אבל לא לרבים לרבים. איך מעדכנים קשר חדש בין אובייקטים ישנים בטבלת רבים לרבים?

    dovidD תגובה 1 תגובה אחרונה
    2
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      השיב לpancake ב נערך לאחרונה על ידי
      #2

      @pancake כתב בEF core code first הדרך הנכונה לכתוב ולעדכן קשר של רבים לרביםדכן אותואותו:

      אבל כשאני רוצה להוסיף את השחקן שכבר קיים במערכת- למשחק, הוא בעצם מנסה להוסיף אותו שוב לטבלה של ה Players ולא רק לטבלה GamePlayer.

      זה לא אמור לקרות.
      אתה צריך לטעון את השחקנים בעזרת אותו קונטקסט, ואם הם כבר קיימים מחוץ לקונטקסט הattach אמור לעבוד (אבל צריך להריץ אותו על כל שחקן).
      תרחיב על הבעיה, ותציין איזה EF מדובר (6/CORE).

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      P תגובה 1 תגובה אחרונה
      0
      • P מנותק
        P מנותק
        pancake
        השיב לdovid ב נערך לאחרונה על ידי
        #3

        @dovid
        ef core 7.0.2, .net core 6.0
        הוא מבצע את הattach אבל הוא מוסיף שוב גם את השחקנים שכבר קיימים- במקום להוסיף רק את אלו שלא היו עד עכשיו
        השגיאה קופצת ב saveChanges() שהוא מנסה להוסיף שוב את אותו קשר שכבר קיים ונתקל באילוץ של PRIMARY_KEY.

        תגובה 1 תגובה אחרונה
        0

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

        • אין לך חשבון עדיין? הרשמה

        • התחברו או הירשמו כדי לחפש.
        • פוסט ראשון
          פוסט אחרון
        0
        • דף הבית
        • קטגוריות
        • פוסטים אחרונים
        • משתמשים
        • חיפוש
        • חוקי הפורום