ABA


"אם אני עושה foreach או LINQ זה מושך לי את כל הנתונים של אובייקט שלם?"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #20908 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 20908
fly
חבר מתאריך 23.7.13
668 הודעות, 1 פידבק
   19:17   02.10.14   
אל הפורום  
  אם אני עושה foreach או LINQ זה מושך לי את כל הנתונים של אובייקט שלם?  
 
   c#

אני מעוניין לשנות או להוסיף לשדה אחד באובייקט

אני מניח שזה טיפשי למשוך את כל האובייקט ואז לשנות את הערך

איך אני משנה את הערך בלי למשוך הכל???

עשיתי ככה

האם זה מושך את כל הנתונים של האובייקט מהבסיס נתונים לתוך item

או רק מה שאני מבקש



                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  Item מחזיר פוינטר לאובייקט.. אז אין פה איזה בזבוז.. inno3D 02.10.14 19:56 1
     לדעתי אתה טועה, אם מדובר בחיבור ישיר לDatabase סביר להניח שבכל איטרציה כזו הוא איציק2 02.10.14 20:11 2
         סבבה יש מצב.. אבל עדיין אפשר להגדיר את האיטרטור להחזיר רק חלק מהשדות inno3D 02.10.14 20:17 3
  תעשה משהו כזה VeNom  02.10.14 21:00 4
     תודה ,אבל איך אני שולף רק את ה- myFavorits ומוסיף לו, במקום את כל ה-user fly 02.10.14 21:59 5
         ככה VeNom  03.10.14 10:23 6
             מחזק. בנוסף: dvir8 03.10.14 18:27 7
                 ולמה הפרוצדורה הזאת לא מוסיפה לי כלום לטבלה? fly 06.10.14 14:56 9
                     כי אתה מוסיף עוד אובייקט למערך שחוזר לך מהשאילתא inno3D 06.10.14 20:59 10
                         זה לא עובד כי myFavorites זו טבלה שמקושרת לשורה ב newUser fly 06.10.14 22:32 11
                             לא ממש הבנתי איך בנויה הטבלה שלך.. inno3D 06.10.14 23:06 12
                                 הסבר fly 06.10.14 23:16 13
                                     הנה תמונה יותר טובה: הדוגמה הראשונה עובדת והדוגמה השניה לא עובדת fly 07.10.14 00:21 14
             איך באמת אני אקשר ליוזר? fly 06.10.14 14:07 8
     שאלתי את השאלה ב-stack עדיין אין לי פיתרון fly 13.12.14 23:50 15
  פשוט תשתמש בחיבור SQL ישיר עם שאילתה.. לא מבין למה להסתבך? אם זה כ''כ משנה לך איציק2 14.12.14 22:00 16
     אין לי מושג איך לעשות את זה fly 17.12.14 17:48 17

       
inno3D
חבר מתאריך 21.4.02
4533 הודעות
   19:56   02.10.14   
אל הפורום  
  1. Item מחזיר פוינטר לאובייקט.. אז אין פה איזה בזבוז..  
בתגובה להודעה מספר 0
 
   אבל בגדול אם לא הגדרת את האיטרטור להחזיר רק חלק מהשדות של האובייקט אז אתה תקבל את כל השדות


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
איציק2
חבר מתאריך 26.4.08
2436 הודעות
   20:11   02.10.14   
אל הפורום  
  2. לדעתי אתה טועה, אם מדובר בחיבור ישיר לDatabase סביר להניח שבכל איטרציה כזו הוא  
בתגובה להודעה מספר 1
 
   מתחבר ומושך את המידע שהוא כולל את כל האובייקט.
השאלה איזה סוג חיבור זה, לפי מה שזה נראה הוא יוצר את החיבור למסד כמה שורות לפני ומושך את המידע, כלומר הוא לא מחזיק את המידע בdataset או משהו בסגנון.

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
inno3D
חבר מתאריך 21.4.02
4533 הודעות
   20:17   02.10.14   
אל הפורום  
  3. סבבה יש מצב.. אבל עדיין אפשר להגדיר את האיטרטור להחזיר רק חלק מהשדות  
בתגובה להודעה מספר 2
 
   במקום foreach תשתמש ב LINQ ואז אפשר להשתמש ב select ולהחזיר חלק מהשדות כמו ב SQL


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
VeNom  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 7.6.02
7922 הודעות, 1 פידבק
   21:00   02.10.14   
אל הפורום  
  4. תעשה משהו כזה  
בתגובה להודעה מספר 0
 
  

using(var db = dataBase())
{
var relevantUsers = db.newUser.Where(user => user.id == idUser).ToList();

foreach(var user in relevantUsers)
{
user.myFavorits.Add(new BE.MyLong { myLong = f});
}

db.SaveChanges();
}

ובלי קשר - יש לך מיליון שגיאות כתיב..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
fly
חבר מתאריך 23.7.13
668 הודעות, 1 פידבק
   21:59   02.10.14   
אל הפורום  
  5. תודה ,אבל איך אני שולף רק את ה- myFavorits ומוסיף לו, במקום את כל ה-user  
בתגובה להודעה מספר 4
 
   ערכתי לאחרונה בתאריך 02.10.14 בשעה 22:18 בברכה, fly
 
ויותר מזה

איך אני רק מוסיף בלי למשוך את כל מה שנמצא ב- myFavorits?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
VeNom  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 7.6.02
7922 הודעות, 1 פידבק
   10:23   03.10.14   
אל הפורום  
  6. ככה  
בתגובה להודעה מספר 5
 
  

var relevantmyFavorits = db.newUser.Where(user => user.id == idUser).Select(u => u.myFavorits).ToList();

אם אתה רוצה ישר לעדכן אז תוכל לכתוב משהו שנקרא stored procedure ולעשות את הדברים ישירות על ה DB.
כמובן שאתה יכול להכניס לטבלת myFavorits נתונים, אבל איך תקשר אותם ליוזרים?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   18:27   03.10.14   
אל הפורום  
  7. מחזק. בנוסף:  
בתגובה להודעה מספר 6
 
   מה שכתבת(fly) בעצם מייצר List של אובייקטים של כל הטבלה ולאחר מכן מבצע איטרציה על כל אובייקט ומחפש את ה Id הנכון.

מה ש Venom כתב מתורגם ל Sql query היות והשתמש ב LINQ.
אם תפתח Profiler של Sql תוכל לראות ש EntityFramework מבצע אופטימיזציה לשאילתא ובעצם מחפש את היוזר בדומה ל


select * from table where userid = f

באותה מידה ניתן להשתמש בקוד lambda

קראתי מאמרים שבמקרים מסוימים עדיף להביא טבלה שלמה מאשר לבצע שאילתא ב Sql אבל לא במקרה הזה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
fly
חבר מתאריך 23.7.13
668 הודעות, 1 פידבק
   14:56   06.10.14   
אל הפורום  
  9. ולמה הפרוצדורה הזאת לא מוסיפה לי כלום לטבלה?  
בתגובה להודעה מספר 7
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
inno3D
חבר מתאריך 21.4.02
4533 הודעות
   20:59   06.10.14   
אל הפורום  
  10. כי אתה מוסיף עוד אובייקט למערך שחוזר לך מהשאילתא  
בתגובה להודעה מספר 9
 
   ערכתי לאחרונה בתאריך 06.10.14 בשעה 21:02 בברכה, inno3D
 
ולא לדאטה בייס..

תנסה את זה



db.newUser.myFavorites.Add(new BE.MyLong { myLoge = f });


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
fly
חבר מתאריך 23.7.13
668 הודעות, 1 פידבק
   22:32   06.10.14   
אל הפורום  
  11. זה לא עובד כי myFavorites זו טבלה שמקושרת לשורה ב newUser  
בתגובה להודעה מספר 10
 
   ערכתי לאחרונה בתאריך 06.10.14 בשעה 22:45 בברכה, fly
 
צריך לשייך את זה למשתמש ספציפי שנמצא בטבלה newUser

ואם אני ארצה להוסיף ישירות לטבלה myFavorites

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
inno3D
חבר מתאריך 21.4.02
4533 הודעות
   23:06   06.10.14   
אל הפורום  
  12. לא ממש הבנתי איך בנויה הטבלה שלך..  
בתגובה להודעה מספר 11
 
   אבל עדיף שיהיו לך כמה טבלאות מאשר טבלה בתוך טבלה אם זה מה שהבנתי שקורה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
fly
חבר מתאריך 23.7.13
668 הודעות, 1 פידבק
   23:16   06.10.14   
אל הפורום  
  13. הסבר  
בתגובה להודעה מספר 12
 
   אני מנסה להוסיף

אובייקט מסוג FavoritsUsersLong לליסט myFavorits שנמצא בתןך הnewuser

הטבלה newuser מצביעה על הטבלה FavoritsUsersLong



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
fly
חבר מתאריך 23.7.13
668 הודעות, 1 פידבק
   00:21   07.10.14   
אל הפורום  
  14. הנה תמונה יותר טובה: הדוגמה הראשונה עובדת והדוגמה השניה לא עובדת  
בתגובה להודעה מספר 13
 
   בדוגמה הראשונה אני מושך את כל האובייקט

בדוגמה השניה אני מושך רק את myfavorits


למה הדוגמה השניה לא עובדת????



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
fly
חבר מתאריך 23.7.13
668 הודעות, 1 פידבק
   14:07   06.10.14   
אל הפורום  
  8. איך באמת אני אקשר ליוזר?  
בתגובה להודעה מספר 6
 
   ערכתי לאחרונה בתאריך 06.10.14 בשעה 14:20 בברכה, fly
 
האם מספיק לשים

את ה-ID של המשתמש בטבלה myFavorits בשדה index


וזה ידע לקשר?


אני לא רואה אפשרות לגשת לשדה index


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
fly
חבר מתאריך 23.7.13
668 הודעות, 1 פידבק
   23:50   13.12.14   
אל הפורום  
  15. שאלתי את השאלה ב-stack עדיין אין לי פיתרון  
בתגובה להודעה מספר 4
 
   http://stackoverflow.com/questions/27461829/how-can-i-edit-or-add-to-a-particular-field-without-pull-the-all-object/27462311?noredirect=1#comment43362655_27462311


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
איציק2
חבר מתאריך 26.4.08
2436 הודעות
   22:00   14.12.14   
אל הפורום  
  16. פשוט תשתמש בחיבור SQL ישיר עם שאילתה.. לא מבין למה להסתבך? אם זה כ''כ משנה לך  
בתגובה להודעה מספר 0
 
   (לא שזה אמור להיות כ"כ משנה אלא אם כן אתה מחזיק מערכת ענקית בטירוף, ואם כן אז זה כבר טעות שאתה מחזיק את המסד שלך בצורת entity framework)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
fly
חבר מתאריך 23.7.13
668 הודעות, 1 פידבק
   17:48   17.12.14   
אל הפורום  
  17. אין לי מושג איך לעשות את זה  
בתגובה להודעה מספר 16
 
   ערכתי לאחרונה בתאריך 17.12.14 בשעה 18:32 בברכה, fly
 
אין לי הרבה זמן כרגע לבדוק את העניין

אולי בהמשך



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net