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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. אנטיטי ב C# - שאלות

אנטיטי ב C# - שאלות

מתוזמן נעוץ נעול הועבר תכנות
33 פוסטים 4 כותבים 2.0k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ח מנותק
    ח מנותק
    חבלזון
    כתב ב נערך לאחרונה על ידי חבלזון
    #11

    אני חוזר לשאלות של מתחילים
    שאלה 5:
    מה הדרך הנכונה והמומלצת לטיפול בעדכון אשכול של נתונים (graph כמו שלמדתי כאן) באמצעות טופס (wpf), כאשר אני רוצה לנצל את המעלות של ה Binding לפקדים, אבל יש כמובן לחצן ביטול שמבטל את כל השינויים בטופס הזה.
    האם לאגד את כל האשכול לטופס, ובביטול לטעון אותו מחדש מהמסד? אולי ליצור עותק ולעבוד עליו, ואז להשתמש בSetValues שאני עוד לא כל כך מכיר, או שיש דרך פשוטה הרבה יותר?
    שאלה 6:
    שאלה כללית, הדרך בה עבדתי עד היום, זה ליצור מחלקה סטטית לניהול הנתונים ושאר המחלקות ניגשים אליה. האם זה נכון גם פה? או שמא כדאי לפעמים או תמיד ליצור אוביקט חדש של ה DbContext שלי?

    clickoneC תגובה 1 תגובה אחרונה
    0
    • clickoneC מנותק
      clickoneC מנותק
      clickone
      השיב לחבלזון ב נערך לאחרונה על ידי
      #12

      @חבלזון
      לגבי 6: במעבר מאקסס תמיד הייתי הולך על מחלקה סטטית ש"חיה" לאורך כל חיי התוכנית.
      עד שלמדתי שיותר נכון לקרוא כל פעם מחדש לDB.
      כמובן באותו חלון ובאותה בקשה כל אחד.
      מצד שני, היום אני בווב, ושם זה בוודאי מתנהל אחרת (בכל קריאה לדף הכל מתחיל מחדש)
      משא"כ ביישום WPF.

      אין טסט כמו פרודקשן.

      המייל שלי urivpn@gmail.com

      ח תגובה 1 תגובה אחרונה
      1
      • ח מנותק
        ח מנותק
        חבלזון
        השיב לclickone ב נערך לאחרונה על ידי חבלזון
        #13

        @clickone אמר באנטיטי ב C# - שאלות:

        כמובן באותו חלון ובאותה בקשה כל אחד.

        כלומר - לכל חלון מופע db אחד? הבנתי נכון?

        clickoneC תגובה 1 תגובה אחרונה
        0
        • clickoneC מנותק
          clickoneC מנותק
          clickone
          השיב לחבלזון ב נערך לאחרונה על ידי
          #14

          @חבלזון
          כן
          אפשר כמשתנה פרייבט בחלון.
          אני באמת מתחיל לתהות אם באפליקצייה שולחנית לא באמת עדיף אבייקט סטטי אד לכל התוכנית - כמו שחשבתי פעם
          קשה לי להיזכר כעת למה הבנתי בסוף שזה לא נכון. כי זה היה ממש ממזמן. (משהו כמו 8 שנים לפחות)

          אין טסט כמו פרודקשן.

          המייל שלי urivpn@gmail.com

          ח תגובה 1 תגובה אחרונה
          0
          • ח מנותק
            ח מנותק
            חבלזון
            השיב לclickone ב נערך לאחרונה על ידי
            #15

            @clickone יכול להיות בגלל שיכול להיווצר מצב ש db.SaveChanges בחלון אחד
            ישלח שינויים שכוחים / או באמצע תהליך מחלון אחר

            clickoneC תגובה 1 תגובה אחרונה
            1
            • clickoneC מנותק
              clickoneC מנותק
              clickone
              השיב לחבלזון ב נערך לאחרונה על ידי
              #16

              @חבלזון
              בביינדינג אוטומטי זה ממש יכול להיות.
              נכון.
              לכאורה אם כך בחלון אחד אין את הבעייה הזו.

              אין טסט כמו פרודקשן.

              המייל שלי urivpn@gmail.com

              ח תגובה 1 תגובה אחרונה
              1
              • ח מנותק
                ח מנותק
                חבלזון
                השיב לclickone ב נערך לאחרונה על ידי
                #17

                @clickone אני מניח שזה שווה את הקריאה מחדש לconnection בפתיחת החלון.
                רק עזור נא לי, אם אני מבצע שמירה בחלון עריכה, איך אני מכניס את השינויים וההוספות לחלון הרשימה?
                בודאי לא Reload... הבנתי שיש פעולה שנקראת Attach, זה קשור לכאן? ו... איך?

                clickoneC תגובה 1 תגובה אחרונה
                0
                • clickoneC מנותק
                  clickoneC מנותק
                  clickone
                  השיב לחבלזון ב נערך לאחרונה על ידי
                  #18

                  @חבלזון
                  הידע שלי בWPF ממש חלש.
                  (צריך לחכות ל @dovid ..)
                  אולי בינתיים זה מקוום טוב להתחיל. (בטח ראית את זה כבר)
                  בווב כאמור זה שונה.

                  אין טסט כמו פרודקשן.

                  המייל שלי urivpn@gmail.com

                  ח תגובה 1 תגובה אחרונה
                  1
                  • ח מנותק
                    ח מנותק
                    חבלזון
                    השיב לclickone ב נערך לאחרונה על ידי
                    #19

                    @clickone תודה. באמת הכנתי כבר את הפרויקט ההוא. שם הם פשוט שמים הכול בחלון אחד עם גרידים שמופיעים לפי הצורך. קשה לי להתחבר לרעיון, עדיין לא יודע למה...

                    תגובה 1 תגובה אחרונה
                    0
                    • dovidD מחובר
                      dovidD מחובר
                      dovid ניהול
                      כתב ב נערך לאחרונה על ידי
                      #20

                      שאלות יפות אחת אחת.

                      הנקודות שאני מעוניין בהם לגבי המחשבים של הזנת הנתונים:

                      1. שלא אצטרך כלל לטפל בנושא של מסד הנתונים (למשל התקנת תוכנת DB כלשהי)
                      2. שהנתונים ישמרו מוצפנים באופן קריא רק על ידי התוכנה שלי
                      1. ברור שאפשר.
                      2. זה מסד מרכזי (דרך אינטרנט), או מקומי בכל מחשב?
                        בכל מקרה זה רק לגבי הקשיית הדרך, כי כל מה שהתוכנה שלך יכולה לקרוא ולכתוב, אפשר בדרך קלה או פחות קלה לעשות גם בלעדיה. אין טכניקה בעולם שמונעת את זה.

                      מה הדרך הנכונה והמומלצת לטיפול בעדכון אשכול של נתונים (graph כמו שלמדתי כאן) באמצעות טופס (wpf), כאשר אני רוצה לנצל את המעלות של ה Binding לפקדים, אבל יש כמובן לחצן ביטול שמבטל את כל השינויים בטופס הזה.
                      האם לאגד את כל האשכול לטופס, ובביטול לטעון אותו מחדש מהמסד? אולי ליצור עותק ולעבוד עליו, ואז להשתמש בSetValues שאני עוד לא כל כך מכיר, או שיש דרך פשוטה הרבה יותר?

                      זה שאלה גדולה ובכלל לא של מתחילים. אני מאוד התלבטתי בהז.
                      יש לנו שתי אפשרויות בכל עריכה של ישות,
                      א. לעבוד ישירות על הישות ששייכת לDbContext חי, ואז

                      1. צריך לוודא שלא מבוצעת שמירה בחלונית אחרת שתשפיע גם עליו (או לעשות בידוד של DbContext פר חלון כפי שאמר @clickone או הצעה דומה )
                      2. צריך לבצע שחזור במקרה שהלקוח ביצע ביטול ע"י הערכים המקוריים של הישות

                      ב. לעשות עותק של הישות או לפחות לנתק אותה מהDbContext, ואז:

                      1. בעת שמירה צריך למזג אותה חזרה לDbContex
                      2. אין לנו אינדיקציה אם היא השתנתה או לא בלי לעקוב ממש.

                      האפשרות השניה טובה בהרבה מנסיוני.

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

                      אם אתה הולך עם האפשרות השניה במקטע הקודם אתה יכול לעבוד עם DbContext אחד סטטי ולהרויח קאש וLazy Loading וכו.
                      בכל מקרה אל תאפשר עריכות של חלקים מקושרים באותו הפעם, כי זה יסבך לך את החיים.
                      כלומר שאם יש בחלון אחד פרטי תורם, ויש רשימת טלפונים שלו, וזה שתי טבלאות, לחצן השמור של פרטי התורם יתייחס רק לפרטים שלו כי הטלפונים יישמרו מייידית - ומבחינת הUX שבזה, צריך לעשות את בצורה של כפתור עריכה כך שתהיה תחושה של שמירה מיידית בעת הוספת טלפון או עריכתו זאת למרות שלבסוף ילחצו על ביטול בסיום העריכה.

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

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

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

                        @dovid תודה על המחמאות והתשובה המושקעת. לפני שאבקש עוד הסברים, אני רוצה לעיין היטב בדבריך. כרגע אשמח לדון בתחילת דבריך אודות מסד הנתונים. התוכנה שלי יועדה להיות מותקנת במחשבים רבים בלי אינטרנט כלל או רק מייל. ולכן יש לכל התקנה מסד נתונים מקומי (אקסס כרגע) לה אני קורא "הזנת נתונים", וחוץ מזה יש מחשב מרכזי (כרגע שרת SqlServer) שמכיל את הנתונים כולם "המחשב הראשי"
                        כל מחשב של הזנת נתונים שולח עדכונים מידי פעם באמצעות קובץ מוצפן ומקודד שהתוכנה יוצרת. השליחה מתבצעת גם דרך מייל או אפילו - דיסק און קי. אני מניח שאתה כבר משער לעצמך איזה טלפונים אני מקבל על בעיות משונות יש במחשבי הזנת הנתונים. בעיה נוספת ועיקרית- מאחר והמחשבים הנ"ל אינם מחוברים לאינטרנט, תוספת של התקנת הדרייבר של אקסס מגדילה את קובץ ההתקנה שלי במאות אחוזים, ומסרבלת מאוד.
                        ולשאלתי- כתבת שאפשר בודאי לחסוך את הצורך בהתקנת Db. הכיצד?

                        dovidD תגובה 1 תגובה אחרונה
                        0
                        • dovidD מחובר
                          dovidD מחובר
                          dovid ניהול
                          השיב לחבלזון ב נערך לאחרונה על ידי
                          #22

                          @חבלזון אמר באנטיטי ב C# - שאלות:

                          @dovid תודה על המחמאות והתשובה המושקעת. לפני שאבקש עוד הסברים, אני רוצה לעיין היטב בדבריך. כרגע אשמח לדון בתחילת דבריך אודות מסד הנתונים. התוכנה שלי יועדה להיות מותקנת במחשבים רבים בלי אינטרנט כלל או רק מייל. ולכן יש לכל התקנה מסד נתונים מקומי (אקסס כרגע) לה אני קורא "הזנת נתונים", וחוץ מזה יש מחשב מרכזי (כרגע שרת SqlServer) שמכיל את הנתונים כולם "המחשב הראשי"
                          כל מחשב של הזנת נתונים שולח עדכונים מידי פעם באמצעות קובץ מוצפן ומקודד שהתוכנה יוצרת. השליחה מתבצעת גם דרך מייל או אפילו - דיסק און קי. אני מניח שאתה כבר משער לעצמך איזה טלפונים אני מקבל על בעיות משונות יש במחשבי הזנת הנתונים. בעיה נוספת ועיקרית- מאחר והמחשבים הנ"ל אינם מחוברים לאינטרנט, תוספת של התקנת הדרייבר של אקסס מגדילה את קובץ ההתקנה שלי במאות אחוזים, ומסרבלת מאוד.
                          ולשאלתי- כתבת שאפשר בודאי לחסוך את הצורך בהתקנת Db. הכיצד?

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

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

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

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

                            שכחתי לציין שבעת ניתוק ישות מהDbContext לא יעבוד הLazyLoading.
                            לכן התצוגה צריכה להיות מחושבת בהתאם. במילים אחרות שבשום מקום לא יהיה אפשר לערוך (חוץ מאיפה שכן 🙂 ) ואיפה שכן שלא יהיה בינדינג לNavigation Properties ובטח שלא תהיה עריכה בו זמנית שלהם.

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

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

                            תגובה 1 תגובה אחרונה
                            1
                            • ח מנותק
                              ח מנותק
                              חבלזון
                              כתב ב נערך לאחרונה על ידי
                              #24

                              התקדמתי ב"ה בתוכנית, ועכשיו ברצוני להכין תוכנה (Wpf) עבור ניהול של מסד הנתונים הראשי.
                              גיליתי שיש לי חור בהשכלה... איך ליצור נכון את החיבור למסד הנתונים שנמצא באתר (sql server)?
                              כלומר, אני יכול להכניס בConnectionString שם משתמש וסיסמא קבועים, אבל "ליבי אומר לי" שזה גרוע מאוד....
                              מצד שני, אני אמור ליצור שם משתמש (לוגין בעצם) שונה לכל עמדת מחשב? ואם כן איך אני שומר ומנהל את זה (כאמור בחיבור על ידי EnitityFramework)? הרי לא יתכן שצריך לקמפל קוד נפרד לכל אחד...
                              בחיפוש ברשת נאבדתי בין התוצאות, אודה לכם מאוד לכל מידע / הכוונה להדרכה מסודרת בנושא / תיקון שגיאות בשאלה עצמה וכדומה

                              Y תגובה 1 תגובה אחרונה
                              0
                              • Y מנותק
                                Y מנותק
                                yits
                                השיב לחבלזון ב נערך לאחרונה על ידי yits
                                #25

                                @חבלזון אמר באנטיטי ב C# - שאלות:

                                כלומר, אני יכול להכניס בConnectionString שם משתמש וסיסמא קבועים, אבל "ליבי אומר לי" שזה גרוע מאוד....

                                את זה אתה ממקם בתוך הקוד או בקובץ קונפיגורציה (כנראה App.config) חיצוני.

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

                                לקניה והנחות ב KSP כנסו מכאן.
                                למוצרים עם הנחה מכאן.

                                ח תגובה 1 תגובה אחרונה
                                1
                                • ח מנותק
                                  ח מנותק
                                  חבלזון
                                  השיב לyits ב נערך לאחרונה על ידי
                                  #26

                                  @yits אמר באנטיטי ב C# - שאלות:

                                  @חבלזון אמר באנטיטי ב C# - שאלות:

                                  כלומר, אני יכול להכניס בConnectionString שם משתמש וסיסמא קבועים, אבל "ליבי אומר לי" שזה גרוע מאוד....

                                  את זה אתה ממקם בתוך הקוד או בקובץ קונפיגורציה (כנראה App.config) חיצוני.

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

                                  אם הבנתי נכון- ליצור לוגין אחר לכל מחשב, ולשים את המידע הזה בקובץ חיצוני?
                                  ואיך זה מאובטח?

                                  תגובה 1 תגובה אחרונה
                                  0
                                  • dovidD מחובר
                                    dovidD מחובר
                                    dovid ניהול
                                    כתב ב נערך לאחרונה על ידי
                                    #27

                                    עקרונית, בתוכנה שולחנית, אתה לא אמור ליצור לוגין שונה לכל מחשב, וגם לא אמור לשמור את הפרטים הללו בסוד.
                                    בשביל הגמישות - שמים את המחרוזת חיבור בApp.config.
                                    אבל זה נכון שמתי שכן רוצים לשמור את פרטי החיבור ב"סוד", אז זה אפשרי, ראה כאן
                                    https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/connection-strings-and-configuration-files

                                    אתה גם יכול לתת את מחרוזת החיבור בזמן ריצה כתגובה לסיסמה של המשתמש או משהו דומה.

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

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

                                    ח תגובה 1 תגובה אחרונה
                                    3
                                    • ח מנותק
                                      ח מנותק
                                      חבלזון
                                      השיב לdovid ב נערך לאחרונה על ידי
                                      #28

                                      @dovid אמר באנטיטי ב C# - שאלות:

                                      וגם לא אמור לשמור את הפרטים הללו בסוד

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

                                      dovidD תגובה 1 תגובה אחרונה
                                      1
                                      • dovidD מחובר
                                        dovidD מחובר
                                        dovid ניהול
                                        השיב לחבלזון ב נערך לאחרונה על ידי
                                        #29

                                        @חבלזון בא נאמר ככה, מחשב אישי זה לא משהו שהולך ברחובות.
                                        כשאתה חושש שהמידע ידלוף אתה צריך לדעת על מי אתה מגן, עליך או על המשתמש.
                                        אם אתה מגן עליך (אפשר עם השם והסיסמה לגשת לכל החומר), עליך ליצור במסד משתמש שלא חשוף ליותר ממה שהתוכנה אמורה להיות חשופה.
                                        אם אתה מגן על המשתמש אתה יכול להדריך אותו איפה החומר הרגיש או פשוט לבקש ממנו את הסיסמה בהפעלת התוכנה ולא לשמור אותה בAppConfig.
                                        אם אתה צריך גמישות רבה יותר - למשל אתה מרשה למשתמש רק 10 שורות בכל פעם, אתה חייב לעשות תוכנת ווב מתווכת בין התוכנה למסד, ולא לחשוך את התוכנה ישירות למסד. כי כפי שאתה חושש, גם עם התוכנה מוגנת כי הרי אתה פיתחת אותה עם ההגבלות, פרטי החיבור חשופים.
                                        אמנם נתתי לך לינק להצפין את פרטי החיבור אבל אני לא מאמין שזה עזור מאומה מהרגע בו אפשר לצוטט לתוכנה (זה כנראה רק מגן מפני מי שיש לו גישה למערכת הקבצים).

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

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

                                        תגובה 1 תגובה אחרונה
                                        3
                                        • ח מנותק
                                          ח מנותק
                                          חבלזון
                                          כתב ב נערך לאחרונה על ידי חבלזון
                                          #30

                                          @dovid אמר באנטיטי ב C# - שאלות:

                                          בקשר למיזוג הקבוע עם המסד לא שאלת על זה אבל אם יש לך בעיות תפרט את התהליך

                                          הגעתי לשלב הזה בשעה טובה, ואשמח לקבל ממך עצה טובה בנושא. הצורה בה עבדתי עד היום היא שתחנת הקצה (מסד Access) יוצרת קובץ XML עם הנתונים, אותו שולחים במייל. בקצה השני יש מחשב הקורא את המיילים ומזין את הנתונים לשרת (Sql Server)
                                          קובץ ה XML מחולק לשלוש שלוחות עיקריות - רשומות חדשות, עדכונים, ומחיקות
                                          בהנחה שאני עובר לעבוד עם Sqlite בתחנות הקצה, יש לך הדרכה - הצעה - עבורי איך לבצע מיזוג קל ומהיר?
                                          תשובתך תעזור לי מאוד להחליט על עצם השינוי. תודה רבה מראש!

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

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

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

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