PDA

View Full Version : تو يك پروژه چند تا dataset بسازيم ??



babak.7710
دوشنبه 24 تیر 1387, 20:40 عصر
چند تا سوال در مورد dataset داشتم ؟؟؟

ممنون ميشم كامل توضيح بدين.

1- ميزان حافظه اي كه dataset از سيستم ميگيره رو چطوري ميشه محاسبه كرد؟ (ميخوام ببينم مقرون به صرفه هستش از dataset استفاده كنم)

2- تو يك پروژه چند تا dataset بسازيم بهتره ؟ ( من براي اينكه حافظه كمتري از سيستم بگيرم داخل هر فرمم يك dataset ميسازم و فقط جدول هايي رو كه واسه اين فرم لازم دارم توش add ميكنم ) آيا كاري كه انجام ميدم درسته ؟ -- لطفا روش مناسب رو بگين

= من فقط يك DataBase دارم با 8 تا جدول كه حجم زيادي از اطلاعات رو هم دارند

gdevnb
سه شنبه 25 تیر 1387, 00:25 صبح
سلام
دوست عزیز این سوالها کلی هستند و جواب دقیقی براشون پیدا نمی کنی
میزان حافظه مورد استفاده بسته به مقدار داده ای هست که تو دیتاست میریزی.
تو پروژه اگه واقعاً نیازه از دیتاست استفاده کن در غیر اینصورت دیتاریدر پیشنهاد میشه.

night_walker
سه شنبه 25 تیر 1387, 08:56 صبح
با سلام
من تا جایی که میدونم استفاده از دیتاریدر سریعتر از دیتاست است ولی نباید از اون زیاد استفاده کرد چون در این صورت دیگه برنامه نویسی سه لایه معنی پیدا نمیکنه. دیتاست ابتدا اطاعات رو در یک فایل XML کش میکنه و سپس از اون استفاده میکنه که با این کار خوندن اطلاعات سریعتر انجام میشه و نیاز به دسترسی به بانک کاهش پیدا میکنه. در ضمن دیتاریدر مزیتی بود که Microsoft روی اون خیلی مانور میداد.
ولی حتما یادتون باشه استفاده از دیتا ریدر ونبستن اون میتونه مقدار زیادی از حافظه رو مصرف کنه.

hanieh66
سه شنبه 25 تیر 1387, 23:09 عصر
سلام
من هم این سوالا رو داشتم. کسی می تونه توضیح خوبی راجع به این قضایا بده؟ من برای تمام تیبلها و view های بانکم یک دیتاست می سازم با ویزارد خود ویژوال استودیو و همه جا با همون کار می کنم. ایا روش من از لحاظ فنی درسته و یا مشکلی داره؟

و اینکه چه جاهایی از دیتاست و چه جاهایی از دیتاریدر استفاده کنیم؟ (یعنی در واقع بصورت دیسکانکت کار کنیم یا کانت) ؟
مثلا جایی که حجم زیادی (حدود 100000 رکورد) می خواد خونده بشه با توجه به میزان حافظه سیستم از یکطرف و سرعت انتقال این اطلاعات در شبکه (مخصوصا اینترنت) چه کاری باید انجام داد تا بهینه باشه؟
اگر بصورت دیسکانت کار کنیم (چونکه می خوام تمام اون رکوردها رو نمایش بدم) ممکنه حافظه کم بیاد در نهایت و یا اصلا انتقال این همه رکورد تحت یک شبکه شلوغ، خیلی کند باشه و اگه بصورت دیتاریدر کنیم باید تا وقتی که کارمون تموم نشده به منبع داده متصل بمونیم. درسته؟
یه نکته مهم اینکه وقتی منبع داده یک فایل داده اکسس (با engine نه چندان قدرتمند در کارهای سنگین) باشه و یا یک پایگاه داده (مثل sql server , oracle , mysql) فرق زیادی می کنه این کار؟
لطفا این سوال دوم رو برام روشن کنین.
در ضمن قبلا پرسیدم ولی کسی سوالام رو همشو جواب نداد!

hanieh66
پنج شنبه 27 تیر 1387, 20:43 عصر
یعنی کسی نمی تونه جواب سوالام رو بده؟!

razavi_university
جمعه 28 تیر 1387, 01:54 صبح
همونطوری که دوستم جناب نظری فرمودند، سوالاتتون کلیه ، همه چیز بستگی به شما داره و نحوه استفاده تون از اشیای ADO.Net
مثلا DataReader اطلاعات را به صورت ReadOnly و ForwardOnly به شما می دهد و در ضمن سرعت آن به نسبت از DataSet بیشتر است (البته در بیشتر از 100 رکورد این تفاوت سرعت کم کم محسوس می شود)
زمانی که فقط اطلاعات را می خواهید بخونین از DataReader استفاده کنین در حای که برای Insert و. . . نمیشه ازش استفاده کرده

gdevnb
جمعه 28 تیر 1387, 08:05 صبح
http://msdn.microsoft.com/en-us/library/ms971481.aspx#adonetbest_topic3

babak.7710
شنبه 29 تیر 1387, 10:17 صبح
تو يك پروژه چند تا dataset بسازيم بهتره ؟
منظور :اولين روش اينكه در هر فرمي كه داره با بانك كار مي كنه ميشه يك connection و dataset جدا ساخت و دومين روش اينكه براي كل پروژه يك connection و dataset ساخت و در فرم هايي كه لازم داريم از آن استفاده كنيم .

كدوم روش يهتره ؟ اولي يا دومي

gdevnb
یک شنبه 30 تیر 1387, 13:10 عصر
سلام
بستگی به نوع برنامتون داره ولی اگه برنامه روی یک سیستم اجرا میشه و تک کاربره هستش بهتره که زمان لود برنامه یه کانکشن ایجاد بشه و از اون استفاده کنید تا در حین کار با برنامه هزینه اتصالهای دیگه رو متحمل نشید. در واقع از یک کانکشن استفاده و در کل برنامه از همون استفاده کنید و در آخر زمان خروج از برنامه اتصال رو ببندید.
در مورد استفاده از دیتاست یا دیتاریدر هم از لینک بالا و مطالب که جناب رضوی فرمودند استفاده کنید.