סגירת IDataReader

yonigold

New member
סגירת IDataReader

הי, הופתעתי לגלות היום באיזה קוד שכתבתי שBUSINESS OBJECT כלשהו מעביר לGUI מידע בצורת IDataReader. למיטב זכרוני צריך לסגור dataReader, ואולם כשהממשק משתמש מקבל את ה-dataReader עליו להיות פתוח כדי לקרוא נתונים. יתכן שהdataReader נשאר פתוח ומבזבז משאבים? האם פעולת BINDING בממשק המשתמש סוגרת dataReader? תודה.
 

itaysk

New member
טעות שלי

התבלבלתי עם CommandBehavior.CloseConnection. אבל מה שזה עושה זה לסגור את ה connection אוטומטית כשאתה סוגר את ה DataReader וזה לא מה שחיפשת. ואאל"ט = אם אני לא טועה, הפעם טעיתי:)
 

Justin Angel

New member
קה פרובלמה מואי צ'יקיטה?

אני מאמין שאתה מדבר על Community Server. מזכרוני גירסה 1.1 שלו כתובה ככה שה-DAL מעלה בחזרה לכל מקום באפליקציה IDataReaderים. כמובן שזאת הדרך הגרועה ביותר שאפשר להשתמש בה לעצב אפליקציה כי למשל שאני ניסיתי לכתוב DAL שיפעל על XML לא היה אפשר כי אי-אפשר להרכיב סתם ככה IDataReader ובאמת מסוגיות של דפדוף-קדימה בלבד. לעומת זאת, כל העבודה של SqlDataReader ב-CS 1.1 תמיד נעשתה בתוך סעיף Using כך שיש מספר מוגבל של מתודות שבאמת פותחות DataReaderים חדשים, שולחות אותן בתוך סעיף ה-using למתודות נוספות (ב-GUI או אפילו בתוך אותה מחלקה) וכמובן שהמתודות מסיימות להתבצע מגיע הסיום של סעיף ה-using ולבסוף ה-DataReade נסגר. כמו שציינו כאן, הוא משתמש ב-CommandBehavior.CloseConnection כך שנסגר ה-DataReader נסגר החיבור. בוא נגיד שזאת ארכיטקטורה מפוקפקת בעליל עם חסרונות ברורים.
 
למעלה