PDA

View Full Version : سوال: تفاوت بین ایجاد فایل dataset و ایجاد دیتاست به صورت کدنویسی



daniyaltjm
سه شنبه 23 شهریور 1395, 11:44 صبح
چه فرقی میکنه که دیتاست رو با کد نویسی ایجاد کنیم یا با ویزارد و اضافه کردن یک فایل بیخود برای آن، من کلا کدنویسی رو ترجیح میدم آیا روشم اشکالی نداره؟مثلا تو پروژه های بزرگ ؟

reza_ali202000
سه شنبه 23 شهریور 1395, 12:36 عصر
سلام دوست عزیز.
از لحاظ عملکردی اطمینان داشته باشید کدی که به صورت ویزاردی ایجاد میشه بهینه تر است، چرا که توسط خود شرکت سازنده به صورت پیش فرض نوشته شده.
و اما از لحاظ سخت افزاری. به صورت کد نویسی توی رم سیستم لود میشه و همیشه تا زمانی که برنامه در حال اجرا هست توی رم لود شده هست.(سرعت بالاتره ولی کارایی پایین تر و سربار سیستم بیشتر) اونجوری توی یه فایل هست هر وقت نرم افزار نیاز داشت فایل رو فراخونی میکنه(البته بعد از ایجاد فایل اجرایی هم تقریبا همین روش که توی هارد نوشته شده رو با تفاوت های فراخونی میکنه).
و اما نکته اخر اگه قرار نیست تغییرات خاصی در ماشین حساب به وجود بیارید پس چرا وقت خودتون رو الکی صرف اختراع دوباره ماشین حساب میکنید. امیدوارم که منظورمو گرفته باشید.

daniyaltjm
سه شنبه 23 شهریور 1395, 13:40 عصر
سلام دوست عزیز.
از لحاظ عملکردی اطمینان داشته باشید کدی که به صورت ویزاردی ایجاد میشه بهینه تر است، چرا که توسط خود شرکت سازنده به صورت پیش فرض نوشته شده.
و اما از لحاظ سخت افزاری. به صورت کد نویسی توی رم سیستم لود میشه و همیشه تا زمانی که برنامه در حال اجرا هست توی رم لود شده هست.(سرعت بالاتره ولی کارایی پایین تر و سربار سیستم بیشتر) اونجوری توی یه فایل هست هر وقت نرم افزار نیاز داشت فایل رو فراخونی میکنه(البته بعد از ایجاد فایل اجرایی هم تقریبا همین روش که توی هارد نوشته شده رو با تفاوت های فراخونی میکنه).

خوب یعنی اگه تعداد جداول زیاد باشه با روش کد نویسی همه جداول میاد توی رم؟!! آخه مگه میشه!! ولی همه جا توصیه شده که از روش کد نویسی استفاده بشه لطفا بیشتر توضیح بدین .


و اما نکته اخر اگه قرار نیست تغییرات خاصی در ماشین حساب به وجود بیارید پس چرا وقت خودتون رو الکی صرف اختراع دوباره ماشین حساب میکنید. امیدوارم که منظورمو گرفته باشید.
نه راستش!! الان دقیقا ما قراره چی رو اختراع کنیم؟

mr.sirwan
سه شنبه 23 شهریور 1395, 13:50 عصر
خوب یعنی اگه تعداد جداول زیاد باشه با روش کد نویسی همه جداول میاد توی رم؟!! آخه مگه میشه!! ولی همه جا توصیه شده که از روش کد نویسی استفاده بشه لطفا بیشتر توضیح بدین .


نه راستش!! الان دقیقا ما قراره چی رو اختراع کنیم؟

الان منظور دوستمون اینه که شما قراره دیتاست رو دوباره اختراع کنین، درحالی که به صورت ویزاردی در اختیار شما قرار خواهد گرفت. همچنین کارایی و سرعت دیتاست نسبت به اتصال مستقیم به پایگاه داده کمتر هستش، بهتره که برای پروژه های بزرگ از این روش استفاده نکنین

ASKaffash
سه شنبه 23 شهریور 1395, 15:08 عصر
سلام
با کد نویسی روشت را ادامه بده حجم فایل EXE نهائی کمتر است

daniyaltjm
سه شنبه 23 شهریور 1395, 15:09 عصر
الان منظور دوستمون اینه که شما قراره دیتاست رو دوباره اختراع کنین، درحالی که به صورت ویزاردی در اختیار شما قرار خواهد گرفت. همچنین کارایی و سرعت دیتاست نسبت به اتصال مستقیم به پایگاه داده کمتر هستش، بهتره که برای پروژه های بزرگ از این روش استفاده نکنین

خوب الان دقیقا منم همین رو گفتم که روش کدنویسی بهتره و همه جا پشنهاد شده و پروژه رو سنگین نمی کنه . منظور شما از اتصال مستقیم چیه همین کدنویسی رو میگین؟

mr.sirwan
سه شنبه 23 شهریور 1395, 16:51 عصر
خوب الان دقیقا منم همین رو گفتم که روش کدنویسی بهتره و همه جا پشنهاد شده و پروژه رو سنگین نمی کنه . منظور شما از اتصال مستقیم چیه همین کدنویسی رو میگین؟

چیزی که شما در اولین پستتون نوشتین و احتمالا دوستمون آقای reza_ali202000 (http://barnamenevis.org/member.php?62953-reza_ali202000) اشتباه متوجه شدن
چه فرقی میکنه که دیتاست رو با کد نویسی ایجاد کنیم یا با ویزارد به همین خاطره که دوستمون گفتن که چه لزومی داره ماشین حساب رو دوباره اختراع کنین

بله منظورم از اتصال مستقیم همون کوئری هایی هستن که خودمون بصورت string به SQLCommand میدیم و اجرا میکنیم

mrprestige
سه شنبه 23 شهریور 1395, 17:23 عصر
خوب الان دقیقا منم همین رو گفتم که روش کدنویسی بهتره و همه جا پشنهاد شده و پروژه رو سنگین نمی کنه . منظور شما از اتصال مستقیم چیه همین کدنویسی رو میگین؟
سلام دوست من وقتت بخیر ، حالا جدا از اینکه به قول دوستمون ASKaffash (http://barnamenevis.org/member.php?63973-ASKaffash) حجم فایل اجرایی تون کم میشه . دلیل دیگش اینه که انعطاف پذیری کدهاتون بیشتر و مدیریت روی کدهاتون بهتر خواهد شد و اینکه با عرض معذرت اصلا فرمایش دوستمون reza_ali202000 (http://barnamenevis.org/member.php?62953-reza_ali202000) که فرمودن "
از لحاظ عملکردی اطمینان داشته باشید کدی که به صورت ویزاردی ایجاد میشه بهینه تر است " اصلا قبول ندارم دلیلش هم توی عرائضم اولم گفتم مانوری که شما توی روش کدنویسی دارید توی روش ویزاردی ممکن نیست بعدم فرمودن "
اما از لحاظ سخت افزاری. به صورت کد نویسی توی رم سیستم لود میشه و همیشه تا زمانی که برنامه در حال اجرا هست توی رم لود شده هست.(سرعت بالاتره ولی کارایی پایین تر و سربار سیستم بیشتر) اونجوری توی یه فایل هست هر وقت نرم افزار نیاز داشت فایل رو فراخونی میکنه(البته بعد از ایجاد فایل اجرایی هم تقریبا همین روش که توی هارد نوشته شده رو با تفاوت های فراخونی میکنه). " اولا که شما بعد اتمام کار برنامه منابع اشغال شده رو Dispose (آزاد) کنید و دلیل نداره همیشه تا زمانی که برنامه در حال اجرا هست توی رم باشه . بــــــــازم تاکید میکنم همه چی برمیگرده به نوع کدنویسی شما و اینکه چطور مدیریت کنید روی کدها و حتی منابع مورد استفاده تون دوست من در کل بنده روش کدنویسی بهتون پبشنهاد میدم .

پیروز و موفق باشید

daniyaltjm
سه شنبه 23 شهریور 1395, 20:20 عصر
سلام دوست من وقتت بخیر ، حالا جدا از اینکه به قول دوستمون ASKaffash (http://barnamenevis.org/member.php?63973-ASKaffash) حجم فایل اجرایی تون کم میشه . دلیل دیگش اینه که انعطاف پذیری کدهاتون بیشتر و مدیریت روی کدهاتون بهتر خواهد شد و اینکه با عرض معذرت اصلا فرمایش دوستمون reza_ali202000 (http://barnamenevis.org/member.php?62953-reza_ali202000) که فرمودن "
از لحاظ عملکردی اطمینان داشته باشید کدی که به صورت ویزاردی ایجاد میشه بهینه تر است " اصلا قبول ندارم دلیلش هم توی عرائضم اولم گفتم مانوری که شما توی روش کدنویسی دارید توی روش ویزاردی ممکن نیست بعدم فرمودن "
اما از لحاظ سخت افزاری. به صورت کد نویسی توی رم سیستم لود میشه و همیشه تا زمانی که برنامه در حال اجرا هست توی رم لود شده هست.(سرعت بالاتره ولی کارایی پایین تر و سربار سیستم بیشتر) اونجوری توی یه فایل هست هر وقت نرم افزار نیاز داشت فایل رو فراخونی میکنه(البته بعد از ایجاد فایل اجرایی هم تقریبا همین روش که توی هارد نوشته شده رو با تفاوت های فراخونی میکنه). " اولا که شما بعد اتمام کار برنامه منابع اشغال شده رو Dispose (آزاد) کنید و دلیل نداره همیشه تا زمانی که برنامه در حال اجرا هست توی رم باشه . بــــــــازم تاکید میکنم همه چی برمیگرده به نوع کدنویسی شما و اینکه چطور مدیریت کنید روی کدها و حتی منابع مورد استفاده تون دوست من در کل بنده روش کدنویسی بهتون پبشنهاد میدم .

پیروز و موفق باشید

درسته، راستش رو بخواین من اصلا با روش ویزاردی کار نکردم و بلد هم نیستم و از اول با کد نویسی انجام میدادم و البته از لحاظ درک هم آدم بهتر متوجه میشه که داره چکار میکنه از روش های Linq to Sql و Entity Framework هم خوشم نمیاد بنظرم بهترین روش همین کدنویس ADO.net هست حالا نظر شمارو نمیدونم بگذریم، خوب شما بالا گفتید منابع رو Dispose کنم یعنی بعد از انجام عملیات باید دیتاست یا دیتاتیبل رو نابود کنم؟

mrprestige
سه شنبه 23 شهریور 1395, 22:07 عصر
درسته، راستش رو بخواین من اصلا با روش ویزاردی کار نکردم و بلد هم نیستم و از اول با کد نویسی انجام میدادم و البته از لحاظ درک هم آدم بهتر متوجه میشه که داره چکار میکنه از روش های Linq to Sql و Entity Framework هم خوشم نمیاد بنظرم بهترین روش همین کدنویس ADO.net هست حالا نظر شمارو نمیدونم بگذریم، خوب شما بالا گفتید منابع رو Dispose کنم یعنی بعد از انجام عملیات باید دیتاست یا دیتاتیبل رو نابود کنم؟
مجدد سلام دوست من ، دوست عزیز اصلا این اشتباه رو نکنید وقتی پای Entity Framework میاد وسط دیگه ADO کارایی نداره بخصوص که صحبت امنیت و حجم کدنویسی مطرح باشه که Entity Framework پرچمداره . حتی تکنولوژی Hibernate جاوا هم جلوش رقمی نیست بنده حتما به شما پیشنهاد میکنم باهاش کار کنید عاشقش میشید که مایکروسافت عجب شاهکاری رو خلق کرده . در مورد فرمایش آخرتون ، Dispose به معنی از بین بردن چیزی نیست ما فقط منابع اشغال شده رو آزاد میکنیم تا اگه خواستیم عملیات مجددی انجام بدیم حافظه مون الکی اشغال نشه و وقتی ما یک object ی رو Dispose کردیم و اگه خواستیم به اون object دوباره دسترسی داشته باشیم لازم نیست اون رو از اول بسازیم فقط کافیه اون رو یکبار دیگه New بکنیم دقت کنید new کردم فرق داره با این که object ی رو از اول بسازید در واقع ما با new کردن دوباره به همون object حافظه تخصیص میدیم . در واقع زمانی میگیم یه object جدید ساخته شده که یه reference جدید تو جدول متغییر ها ( همون جدولی کامپایلر مون میسازه ) ایجاد شده باشه . امیدوارم مطالب قابل درک بوده باشه

موفق باشید

daniyaltjm
سه شنبه 23 شهریور 1395, 22:35 عصر
مجدد سلام دوست من ، دوست عزیز اصلا این اشتباه رو نکنید وقتی پای Entity Framework میاد وسط دیگه ADO کارایی نداره بخصوص که صحبت امنیت و حجم کدنویسی مطرح باشه که Entity Framework پرچمداره . حتی تکنولوژی Hibernate جاوا هم جلوش رقمی نیست بنده حتما به شما پیشنهاد میکنم باهاش کار کنید عاشقش میشید که مایکروسافت عجب شاهکاری رو خلق کرده . در مورد فرمایش آخرتون ، Dispose به معنی از بین بردن چیزی نیست ما فقط منابع اشغال شده رو آزاد میکنیم تا اگه خواستیم عملیات مجددی انجام بدیم حافظه مون الکی اشغال نشه و وقتی ما یک object ی رو Dispose کردیم و اگه خواستیم به اون object دوباره دسترسی داشته باشیم لازم نیست اون رو از اول بسازیم فقط کافیه اون رو یکبار دیگه New بکنیم دقت کنید new کردم فرق داره با این که object ی رو از اول بسازید در واقع ما با new کردن دوباره به همون object حافظه تخصیص میدیم . در واقع زمانی میگیم یه object جدید ساخته شده که یه reference جدید تو جدول متغییر ها ( همون جدولی کامپایلر مون میسازه ) ایجاد شده باشه . امیدوارم مطالب قابل درک بوده باشه

موفق باشید

نمیدونم چرا از اینتیتی خوشم نمیاد! شاید بخاطر ظاهر گرافیکی و ویزاردیشه ولی خوب باید بیشتر در موردش تحقیق کنم، خوب اینطور که متوجه شدم Dispose شی رو نابود نمی کنه و فقط باعث میشه که وقتی بخوایم شی جدیدی رو مجدد ایجاد کنیم نیاد یه شی توی حافظه مثل شی قبلی قرار بده و همون شی که قبلا ساخته بود رو مجدد استفاده میکنه در واقع همون شی رو پاک میکنه ولی آدرسش رو درون جدول کامپایلر نه درسته؟.. خوب سوالی که پیش میاد اینه که پس وظیفه خود گاربج کالکتور این وسط چیه مگه خودکار این کار رو انجام نمیده؟!

mrprestige
چهارشنبه 24 شهریور 1395, 17:36 عصر
خب ببین دوست من کلاً سه نوع Entity Framework مایکروسافت ارائه داده 1- Code First -3 Model First -2 DatabaseFirst که از بین این ها احتمالا شما مورد اول یا دوم رو دیدید ( چون گرافیکی هستن) خوشتون نیومده ولی مورد سوم از زمانی که ایجاد دیتابیس تا کار با جداول و ... با کدنویسی هست یعنی از صفر تا صد شما با کدنویسی سروکار دارید . و درمورد قسمت دوم فرمایشتون درسته برداشتتون ودر قسمت فرمایشتون باید عرض کنم بعضی کلاس ها و متد ها هستند که Garbage Collector توان صدا زدن اونهارو به صورت مستقیم نداره اون موقع برنامه نویس باید به صورت دستی خودش این متد ها رو Dispose کنه. امیدوارم تونسته باشم منظور رو برسونم

پیروز موفق باشید

daniyaltjm
چهارشنبه 24 شهریور 1395, 17:51 عصر
خب ببین دوست من کلاً سه نوع Entity Framework مایکروسافت ارائه داده 1- Code First -3 Model First -2 DatabaseFirst که از بین این ها احتمالا شما مورد اول یا دوم رو دیدید ( چون گرافیکی هستن) خوشتون نیومده ولی مورد سوم از زمانی که ایجاد دیتابیس تا کار با جداول و ... با کدنویسی هست یعنی از صفر تا صد شما با کدنویسی سروکار دارید . و درمورد قسمت دوم فرمایشتون درسته برداشتتون ودر قسمت فرمایشتون باید عرض کنم بعضی کلاس ها و متد ها هستند که Garbage Collector توان صدا زدن اونهارو به صورت مستقیم نداره اون موقع برنامه نویس باید به صورت دستی خودش این متد ها رو Dispose کنه. امیدوارم تونسته باشم منظور رو برسونم

پیروز موفق باشید

ممنون، خوب حالا چطور متوجه بشیم که کدوم کلاسها هستند که کاربج کالکتور نمیتونه باهاشون کار کنه؟ که بعدش بیایم خودمون به صورت دستی این کار رو انجام بدیم؟

mrprestige
چهارشنبه 24 شهریور 1395, 18:25 عصر
خواهش میکنم ، خب ببین یه سری از متد ها و یا Object ها خودشون این قابلیت رو دارن که با استفاده از دستور های خودشون حافظه ای که اشغال کردن رو آزاد کنن ( مثل StopWatcher که با دستور Stop عمل Finalize (کارکرد شبیه dispose هستش اما توسط کاربر دستورش نوشته نمیشه مثه dispose و داخل متد و یا object تعریف میشه ) رو انجام میده و خلی از متدها و آبجکت های دیگه که الان حضور ذهن ندارم) ولی بخوای از لحظ منطقی حساب کنی که بگی کدوم متد ها یا object ها GC از اون ها پشتیانی میکنه یا نه کار زمان بر و غیر منطقی ای هست پس ما چیکار میکنیم ؟ ما میایم از همون اول کار خودمون رو راحت میکنیم و از Dispose استفاده میکنیم .