אשמח לקבל קובץ לדוגמה.
לצרף גם קורות חיים? 
פורסם במקור בפורום CODE613 ב29/04/2014 12:05 (+03:00)
אשמח לקבל קובץ לדוגמה.
לצרף גם קורות חיים? 
פורסם במקור בפורום CODE613 ב29/04/2014 12:05 (+03:00)
תיקון קל: "יש שרתים שלא מאפשרים את זה כלל" - זה לא נכון, אלא זו הגדרה באופציות הSSMS - Managment Studio.
לשון השגיאה:
Saving changes is not permitted. The changes that you have made require the following tables to be dropped and re-created. You have either made changes to a table that can't be re-created or enabled the option Prevent saving changes that require the table to be re-created.
תרגום:
שמירת השינויים איננה מורשית. השינויים שביצעתם דורשים שהטבלאות המפורטות בהמשך ימחקו ויווצרו מחדש. אתם עשיתם שינויים בטבלה אותה אי אפשר ליצור מחדש או שהגדרת את האפשרות "Prevent saving changes that require the table to be re-created" כזמינה.
כדי לשנות את ההגדרה (לא יודע מה הבעיה ביצירה מחדש, אולי הזמן בטבלאות ענק) אז בSSMS בתפריט Tools>Options... בחלונית לבחור Designers ולהוריד את הוי מהתיבת סימון "Prevent saving changes that require the table re-creation".
פורסם במקור בפורום CODE613 ב28/04/2014 16:18 (+03:00)
עצור רגע את ציפיותיך וחשוב איך הבינדינג עובד, ומאיפה הוא יכול לדעת ששינית מאפיין דרך הקוד.
הדרך שלו לדעת את זה, ברירת מחדל, זה ע"י שהוא בודק אם מופע המקור מממש INotifyPropertyChanged. אם כן, הוא "נרשם" להתעדכן" בנעשה והנשמע במחלקה זו ע"י הרשמה לאירוע PropertyChange שיש בממשק INotifyPropertyChanged.
ברגע שהוא רק יודע הוא מעדכן.
במחלקה שלך שנוצרת אוטומטית ע"י אנטיטי (לא כתוב בשאלה אבל יש לך היסטוריה פה),
אין מימוש לממשק הזה.
יש שלוש דרכים להתמודד:
א. לעבוד ולממש לבד.
ב. לרפרש בפקודה את הבינדינג.
ג. לא לשנות בקוד אובייקט שמוצג [u:pf8gk7tz]כעת[/u:pf8gk7tz] בUI.
פורסם במקור בפורום CODE613 ב27/04/2014 23:24 (+03:00)
בהודעתי הקודמת בסעיף א' יש חוסר דיוק, הברירת מחדל היא לא LostFocus (זה קורה בעת עזיבת הטקסטבוקס אפי' לפני עזיבת השורה) אלא Explicit כלומר ע"י בקשה מפורשת בקוד. בשביל לשנות את ההתנהגות הזו אפשר לשנות בבינדינג של עמודה את המאפיין UpdateSourceTrigger לPropertyChanged (זה משתנה ממש "און ליין") או לLostFocus (בעת יציאה מהתא, לא מכל השורה) ככה:
<DataGridTextColumn Binding="{Binding Path=XXX, UpdateSourceTrigger=PropertyChanged}" />
פורסם במקור בפורום CODE613 ב30/04/2014 13:48 (+03:00)
א. האירוע שאתה מזכיר הוא אחרי העדכון. אבל לא העדכון של מקור הנתונים (שזה עדכון "ביינדינגי" שזמן העדכון שלו בברירת מחדל זה LostFocus) אלא רק עדכון של התא הויזואלי בDataGrid. תוכל לראות את הערך המעודן ע"י גישה למאפיין הטקסט של הטקסט בוקס (למשל, במקרה של עמודת טקסט רגילה) של אותו התא.
ב. אין, אבל תוכל לעקוב אחרי מקור הנתונים במקרה של ObservableCollection.
פורסם במקור בפורום CODE613 ב29/04/2014 12:39 (+03:00)
מה מקור השורות של הDataGrid של המוצרים?
פורסם במקור בפורום CODE613 ב24/04/2014 19:46 (+03:00)
אבל אם להישאר בגבולות הפיתרון שהיה תוכל לעשות במקום שדה בוליאני שדה מספרי, ולזרוק שם כל X זמן שאילתת שינוי המספר.
הפסקת התוכנה בכל דרך תפסיק את עדכון המספר והקליינטים האחרים יזהו "התיישנות" - אותו המספר ממשיך להתקיים וזה מראה שהעסק מת שם.
יש בזה חוסר יעילות מסויים לשגע את השרת הSQL בשביל מטרה כזו אבל הוא לא ייקח את זה קשה 
פורסם במקור בפורום CODE613 ב24/04/2014 19:59 (+03:00)
קודם כל, אני חייב לציין את העונג שעושה כזו שאלת איכות... תודה!
שים לב שהשוות את הבעיה שלך לשסנים של ווב. נו ואיך זה עובד שם? כמשתמש מסויים פונה פעם ראשונה הוא יוצר סשן בצד השרת, וע"י מאפיין timeout הוא מתפרק אחרי "נטישה ארוכה" - פרק זמן בהם אין פניה.
הבעיה שלך שאין לך צד שרת. יש לך אוסף קליינטים שעובדים ישירות מול SQL SERVER אז בעצם אין מי שינהל את השסנים, ובמחשבה שניה גם אין מי שיעשה עם המידע הזה משהו.
אם אתה רוצה שקליינט יידע על קיומו של השני, אז צריך להשתמש אם תקשורת רשת בדיוק כמו שmagicode אמר, ולא ע"י מערכת הקבצים או מסד נתונים, שזו גישה מעוותת ובעייתית.
בשביל תקשורת רשת צריך לבחון בדיוק מה הצרכים, ולפי זה להחליט איך לממש את זה.
שים לב שייתכן שתרצה שאי פעילות בתוכנה תחשב גם היא ל"ניתוק", יש על זה "דיבורים" ברשת (למשל http://www.codeproject.com/KB/WPF/AutologoffWPF.aspx?msg=3238811)
פורסם במקור בפורום CODE613 ב24/04/2014 11:37 (+03:00)
אם אכלוס הTabItem עם הUserControl נעשה בזמן עיצוב, אז ביינדינג רגיל יעזור.
אם זה בזמן ריצה אז בקוד האכלוס אפשר לעשות ביינדינג. שים לב שאם זה כותרת או משהו סטטי בסגנון, אז אפי' ביינדינג לא צריך.
פורסם במקור בפורום CODE613 ב10/04/2014 18:43 (+03:00)
RAISERROR, אם הבנתי אותך נכון.
ככה:
RAISERROR ('כאן אתה כותב מה בא לך', 1 , 0)
פורסם במקור בפורום CODE613 ב10/04/2014 18:38 (+03:00)
את השאלה הראשונה לא הבנתי כ"כ. הדרך הפשוטה לשלוט עליו ממקום מרכזי זה עם סטייל.
בקשר לנקודה שעוררת, אכן זה רחוק מלהיות מושלם. למעשה שווה לבדוק כאלו שכתבו משהו מושקע יותר או ללמוד ממעשיהם, כמו זה: http://www.codeproject.com/Articles/36516/WPF-Modal-Dialog, http://www.codeproject.com/Tips/563144/WPF-Dialog-MessageBox-Manager
פורסם במקור בפורום CODE613 ב28/04/2014 09:41 (+03:00)
ניסיתי את הצעתי, הנה צילום מסך:

כל הפרוייקט:
WpfMessageLightOff.7z
פורסם במקור בפורום CODE613 ב08/04/2014 17:52 (+03:00)
כרום זה התוכנה היחידה שאני מכיר שעושה את זה.
אני לא יודע אם יש פקד אלגנטי לזה.
הכי פשוט זה לכסות את הטופס עם ריבוע שחור, ועל זה לפתוח את הטופס הנוסף.
אבל זה עדיין שתי חלונות.
אם אתה רוצה שההודעה תהיה חלק מהחלון, תצטרך לעשות כזה בורדר שיכיל פקד מותאם אישית שאותו תמלא לפי העניין.
פורסם במקור בפורום CODE613 ב08/04/2014 16:08 (+03:00)
כשיש הכנות לפני הפעלות התוכנה, שיש צורך לעשותם רק פעם אחת, אז יותר יעיל ליצור קובץ הרצה נפרד להכנות מאשר שהתוכנה עצמה תבדוק ותבצע כל פעם את הדרוש.
בפועל אולי עם התקנה יותר יוקרתי, אבל ללא התקנה הרבה יותר פופולרי.
אני אישית מעולם לא בניתי התקנה.
פורסם במקור בפורום CODE613 ב08/04/2014 16:08 (+03:00)
ארכיטקט שכחת שמדובר במידע סטטי (אין עדכון-הכנסה-מחיקה) ואז זה רחוק מאוד מהמושג דטה בייס. זה ממש לא קשה לעשות אינדקסים מכמה סוגים בינאריים לגמרי והמהירות אכן יכולה להיות גבוהה ומיטבית.
פורסם במקור בפורום CODE613 ב01/09/2015 16:13 (+03:00)
רחמים, מיצית אותי.
הצלחה בכל.
פורסם במקור בפורום CODE613 ב08/04/2014 11:58 (+03:00)
שוב, לדעתי המיון מיותר. מתשובתך ניכר שנמאס לך לעיין בנושא...
בקשר לליסט מול מערך זה מאוד פשוט, מערך לוקח בדיוק את הגדול שהוא תופס, וליסט תופס מראש מקומות לאפשר הוספה.
עוד שיפור (גם בדרכך שלך) זה לעשות את המחלקה לטרום האיחוד כמבנה.
פורסם במקור בפורום CODE613 ב08/04/2014 11:19 (+03:00)
המיון + האיחוד הוא לכאורה בזבוז, כי המיון הוא לא רק סורק, אלא גם ממקם, ובמקרה שלך היה עדיף שכבר יאחד בנקודת זמן זו.
השאלה איך לממש איחוד מהיר ללא מיון, הרי איחוד מחפש ובשביל חיפוש בינארי צריך מיון. התשובה היא שצריך רשימה חדשה למאוחדים (וזו רשימה הרבה יותר קצרה, ממילא המיון שלה זול יותר) שהיא תהיה ברת חיפוש מהיר כמו רשימה ממויינת.
אבל, אף שאינני מבין איך, Dictionary מוצא מהר יותר מחיפוש בינארי. וממילא עדיף Dictionary.
לפי מה שנראה לי, Dictionary מהתחלה יעשה את העבודה מהר יותר.
אם תמשיך בקו שלך, אז יש לי שיפור:
הפירוש שבמשל הוא המערך השלמים שבנמשל. כמה פירושים = כמה מערכים. במקור יש רק פירוש לכל מילה, אז עדיף שתעבוד עם אובייקט שונה שמכיל במקום ליסט משתנה שלם פשוט (זה חיסכון גם בזיכרון וגם במעבד). ובאובייקט היעד (המאוחד) יהיה מערך ולא ליסט (חיסכון בזיכרון).
פורסם במקור בפורום CODE613 ב07/04/2014 19:24 (+03:00)
כעת סיימתי את הנסיון, תחילה הכנסתי את כל המילים לרשימה אחת ארוכה, אח''כ מיינתי ואח''כ הסרתי כפולים במקום 20 דקות זה הסתיים ב 40 שניות עבור המיון ועוד 7 שניות עבור הסרת איחוד הכפולים !!!
שתי שאלות:
כמה איברים יש?
איך הסרת כפולים?
פורסם במקור בפורום CODE613 ב07/04/2014 16:57 (+03:00)
אם הנמשל ממש זהה למשל, אני חושש שהדרך הנכונה והמעצבנת (כי זה מוריד את כל האתגר) זה הוא מסד נתונים.
זה לא באמת פיתרון, כי למסד יש אותו בעיה אבל מבחינה מעשית זה פשוט להיפטר מהמטלה...
הכי מהיר אני חושב זה טבלה ארוכה ואח"כ Distinct לטבלה אחרת.
פורסם במקור בפורום CODE613 ב07/04/2014 16:34 (+03:00)