PDA

View Full Version : BLL.exe' does not contain a static 'Main' method suitable for an entry point BOL



shima2006
جمعه 05 آذر 1389, 21:01 عصر
سلام دوستان
من طبق تمام مطالبی که دوستان در این فروم اشاره کرده بودند شروع به یک پروژه به صورت سه لایه کردم ...
در مثالهایی که دوستان در این سایت قرار داده بودند دیدم که فقط لایه GUI یا همون PL شامل کلاس Program میشه و متد Main هم در همین کلاس قرار داره...
من کلاس Program رو از پروژه های BLL و DAL حذف کردم و حالا برنامه من این خطا رو میده که این دو تا پروژه متد Main رو ندارند ، که البته بر بدیهی هم هست چون من کلاس Program رو از این دو قسمت حذف کردم...
حالا سوال من از دوستانی که پروژه های سه لایه کار می کنند این هست که به نظر شما من باید چه تغییری در برنامم بدم که دو قسمت DAL و BLL هم از همون کلاس PRogram که در قسمت PL قرار داره ، استفاده کنن؟!

Error 1 Program 'C:\Users\shima\Documents\Visual Studio 2008\Projects\Acc-2\BLL\obj\Debug\BLL.exe' does not contain a static 'Main' method suitable for an entry point BOL

sia_2007
جمعه 05 آذر 1389, 21:08 عصر
باید نوع پروژه ای که اظافه میکنین ؛ Class Library باشه

shima2006
جمعه 05 آذر 1389, 21:43 عصر
باید نوع پروژه ای که اظافه میکنین ؛ Class Library باشه
متشکرم دوست عزیز

من لایه GUL رو از نوع WindowsFormsApplication و دو لایه BOL و DAL رو از نوع Class Library ایجاد کردم حالا DtaSet رو باید در کدوم لایه قرار بدم؟!

hakelberfin
جمعه 05 آذر 1389, 22:02 عصر
سلام

حالا DtaSet رو باید در کدوم لایه قرار بدم؟!
برای ارتباط با دیتابیس یه dll درست کنید و تمام کلاس ها و توابعتون رو که برای کار با دیتابیس هستند در اون قرار بدین.
و اون dll به برنامتون اضافه کنید.

shima2006
جمعه 05 آذر 1389, 22:08 عصر
سلام

برای ارتباط با دیتابیس یه dll درست کنید و تمام کلاس ها و توابعتون رو که برای کار با دیتابیس هستند در اون قرار بدین.
و اون dll به برنامتون اضافه کنید.

این DLL مگه همون کار لایه DAL رو انجام نمیده؟!
یعنی باید یه DLL ، جدا از توابع و کلاسهای لایه DAL ایجاد کنم؟
من قبلا همیشه یه NewItem از نوع DataSet به پروژه ام اضافه میکردم و تمام جداول و کوئری ها رو اونجا اضافه می کردم و تمام ارتباطات با DB رو از طریق اون DataSet انجام میدادم ، منظور شما این هست که این DataSet مستقیما به هیچ کدوم از لایه ها اضافه نمیشه؟!

hakelberfin
جمعه 05 آذر 1389, 22:23 عصر
این DLL مگه همون کار لایه DAL رو انجام نمیده؟!
یعنی باید یه DLL ، جدا از توابع و کلاسهای لایه DAL ایجاد کنم؟

بله همون کار رو انجام میده .
استفاده از DLL مزایایی داره :
حجم برنامه رو کم میکنه و کد شما از دسترسی مستقیم محفوظ میمونه.
اجباری نداره که کد بصورت DLL باشه .
من برای رهایی شما از این مشکل این راه حل رو مطرح کردم.
من برای کار با پایگاه داده DLL ای نوشتم و تمام کلاس ها و توابعی رو که برای کار با پایگاه داده هستند رو در اون قرار دادم و در برنامه هام اونو به Refrence هام اضافه میکنم

hakelberfin
جمعه 05 آذر 1389, 22:27 عصر
دوستانی که در این سایت کد برنامه نویسی لایه ای رو گذاشتند چون کارشون جنبه ی آموزشی داره کد لایه ی BOL و DAL تبدیل به DLL نکردند.
اکثر شرکت ها در برنامه هاشون این لایه ها رو بصورت DLL در برنامه قرار میدن

shima2006
جمعه 05 آذر 1389, 23:38 عصر
بله همون کار رو انجام میده .
استفاده از DLL مزایایی داره :
حجم برنامه رو کم میکنه و کد شما از دسترسی مستقیم محفوظ میمونه.
اجباری نداره که کد بصورت DLL باشه .
من برای رهایی شما از این مشکل این راه حل رو مطرح کردم.
من برای کار با پایگاه داده DLL ای نوشتم و تمام کلاس ها و توابعی رو که برای کار با پایگاه داده هستند رو در اون قرار دادم و در برنامه هام اونو به Refrence هام اضافه میکنم

دوست عزیز فرمایش شما کاملا صحیح هست ولی اگر اشتباه نکنم ساختن DLL هر کلاس در
آخر انجام میشه ، من الان میخوام بدونم آیا الان DataSet رو باید در لایه DAL قرار بدم یا نه؟!
و اگر جواب شما منفی هست ، پس من چطور باید از DataSet استفاده کنم؟!
امیدوارم ذهنم خیلی منحرف نشده باشه!!!

hakelberfin
شنبه 06 آذر 1389, 00:25 صبح
من الان میخوام بدونم آیا الان DataSet رو باید در لایه DAL قرار بدم یا نه؟ دوست عزیز من در بالا گفتم که بله ! باید در لایه ی DAL باشه.در لایه های بالاتر برنامه با دیتابیس ارتباط مستقیم نداره و توسط لایه DAL با بانک تعامل داره


دوست عزیز فرمایش شما کاملا صحیح هست ولی اگر اشتباه نکنم ساختن DLL هر کلاس در
آخر انجام میشه

کاملا درسته ولی زمانی که شما کدتون رو گسترش دادید و تست کردید و به صورت DLL درآوردید در برنامه های آتی لازم نیست به فکر اختراع دوباره ی چرخ باشید ! و از همون DLL استفاده میکنید
یکی از دلایل برنامه نویسی لایه ای همینه !

sia_2007
شنبه 06 آذر 1389, 09:39 صبح
من تا حالا با Data Set کار نکردم
ولی اگه Data Set نگه دارنده ی موجودیتهای شماست
باید اون رو تو لایه مدل Model نگه داری کنین
و سپس مدل رو به تک تک پروژه ها Add Reference کنین
از همین الآن هم پروژه محور و DLL Based برین جلو.

فرض مثال؛ اگه ما داشته باشیم CustomerData Table که اطلاعات Customer ( مشتری ) رو نگه میداره.
یه متد داریم سمت DA که به بانک وصل میشه؛ بر اساس فیلترها اطلاعات رو میخونه و یه Data Table بر میگردونه
میده دست BL و سپس از BL به PL
سمت PL دیتا تغییر میکنه؛ در BL منطق ها چک میشن؛ و سپس DA تغییرات رو اعمال میکنه.
در ضمن Data Set از رده خارج شده
موفق باشی

shima2006
شنبه 06 آذر 1389, 13:17 عصر
یعنی به جای DataSet از چی باید استفاده کنم؟!

sia_2007
شنبه 06 آذر 1389, 13:40 عصر
باید از Object استفاده کنی
مثل کلاس Customer و Employee و ...
برای کار کردن با اینها ؛ باید یه OR/Mapper داشته باشی
حالا یا خودت مینویسی یا از Entity Framework یا Linq to Sql و ... استفاده میکنی

shima2006
شنبه 06 آذر 1389, 14:47 عصر
ببخشید من کلا هیچی نفهمیدم!
میتونید یه مثالی ، لینکی یا توضیح بیشتری در این باره بدین؟!

powerboy2988
شنبه 06 آذر 1389, 22:40 عصر
http://www.codeproject.com/KB/cs/Three_Layer_Architecture.aspx
http://www.codeproject.com/KB/architecture/three_tier_architecture.aspx

shima2006
یک شنبه 07 آذر 1389, 12:41 عصر
http://www.codeproject.com/KB/cs/Three_Layer_Architecture.aspx
http://www.codeproject.com/KB/architecture/three_tier_architecture.aspx

ضمن تشکر از دوست بسیار خوبم Powerboy2988 چند تا نکته رو لازم دیدم اینجا بگم:
مدتها دنبال یک Sample ساده و روان بودم که بتونم برنامه نویسی سه لایه رو به درستی درک کنم
مطالب زیادی خوندم و مثالهای دوستان رو هم در همین سایت بررسی کردم ولی به جرات میگم که این مثالی که در لینک فوق الذکر آورده شده بهترین Sample بود.
به تمام دوستانی که میخوان سه لایه نویسی رو شروع کنن پیشنهاد میکنم مثال رو از لینک فوق دانلود کرده و مطالعه کنن ، دوستانی هم که با زبان انگلیسی مشکل دارند اصلا نترسن چون اصلا نیازی به خوندن مطالب نیست فقط کافیه که برنامه رو دانلود کرده و کدها رو با دقت بخونید هر چند که متن هم بسیار ساده و روان توضیح داده و قابل فهمه
اگر این مثال رو بخونید و بفهمید و بعد هم عین همین برنامه رو برای خودتون بنویسید ، حالا آماده خواهید بود که یه پروژه سه لایه رو با اعتماد به نفس کامل شروع کنید....:چشمک:


باید از Object استفاده کنی
مثل کلاس Customer و Employee و ...
برای کار کردن با اینها ؛ باید یه OR/Mapper داشته باشی
حالا یا خودت مینویسی یا از Entity Framework یا Linq to Sql و ... استفاده میکنی

آخرم من نفهمیدم DAta Set چرا قدیمی شده و چیکار باید بکنم ؟!:افسرده:

e.sunrise2012
یک شنبه 12 مرداد 1393, 17:45 عصر
جالب بود. منم مشکل داشتم که اوکی شد ممنون.