مشاهده نسخه کامل
: درخواست کمک برای شروع کار با EntityFrameWork
am_merman01
29-12-2019, 00:02
باسلام خدمت دوستان و استاتید گرامی
نمی دونم هنوز کسی توی این انجمن فعالیت داره یا نه ولی به عنوان آخرین امیدم سئوالم رو اینجا مطرح میکنم.
من قصد دارم کار با Entity Frame Work رو یاد بگیرم. برای شروع هم از یه سایت به آدرس زیر رفتم و مرحله به مرحله هر کاری رو که تو این صفحه توضیح داده انجام دادم
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
ولی متاسفانه با خطا مواجه میشم که عکسش رو اینجا آپلود کردم.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
حالا لطفا کسی میتونه بهم بگه مشکل کجاست؟ کجای کار رو اشتباه رفتم؟ اصلا چیکار باید بکنم
سلام
امروز کاملاً اتفاقی سری به اینجا زدم ... :D
اول عرض کنم که به ظاهر از EF6 استفاده میکنید.
نمیخواهم در همین شروع کار را سخت کنم ولی شاید بد نباشد روی dotNetCore و به طبع آن EFCore3 هم فکر کنید.
اما در مورد خطا، از تصویر نمیتوان چیزی متوجه شد، شاید SchoolContext تان ایراد داشته باشد و یا شاید app.config تان مشکل داشته باشد.
باید دو فایل فوق را قرار دهید تا بتوان دید مشکل کجاست.
اگر کمک تان میکند، میتوانید این نمونه کد قدیمی وساده را بررسی کنید، با همان EF6 نوشته شده.
Simorgh.EFCodeFirstConsoleSample.zip ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])
موفق باشید.
am_merman01
10-01-2020, 22:15
سلام خدمت استاد حاجی شریفی عزیز که همیشه به عنوان آخرین امید به داد من میرسه:thumbsup:
ممنون بابت توجه تون.
راستش رو بخواید قصد من هم یادگیری EFCore هستش ولی هرچی منابع پیدا کردم به شکلی توضیح داده بودن که شما باید از قبل EF6 رو بلد باشی این شد که منم گفتم که اول مبانی EF6 رو یاد بگیرم بعد برم جلوتر.
برم سر مشکلم:
در حالت ابتدایی و ساده هیچ مشکلی وجود نداره یعنی وقتی که کلاس Context رو بدون پارامتر صدا میکنم چون خود net. برام کانکشن استریگ میسازه مشکلی پیش نمیاد ولی وقتی میخوام از app.config استفاده کنم به مشکل بر میخورم و ارور میده
فرض کنید که من یک کلاس context ساده دارم مثل این:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا میام و توی App.Config کانکشن استرینگ رو تعریف میکنم ولی با خطا مواجه میشم. یک کپی کامل از کانفیگ میزارم اینجا:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
متن خطا هم که بهم نشون میده این هستش:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
میشه لطفا بررسی کنید و ببینید مشکل کار در کجاست؟
ممنون از کمکتون
سلام برادر عزیز
این خطای فعلی از connectionString است ، یعنی ارتباط برقرار نمیشود.
یعنی همین connectionstring خارج app.config کار میکند؟
نام دیتابیس تان SchoolDB-ByConnectionString است؟ با خط تیره؟ (یا مثال است؟!)
و نسخه کامل sql-server را هم که نصب کرده اید؟ (Data Source=.)
یا نسخه دیگری از sqlserver را نصب دارید و یا نام دیتابیس متفاوت است
(پروژه تان هم که dotNetCore نیست و همان dotNetFramework472 است؟)
آن پروژه zip که فرستادم چطور؟ توانستید اجرایش کنید؟ آن هم خطا دارد؟
am_merman01
12-01-2020, 20:39
سلام مجدد
فکر نمی کنم مشکل از VS یا sql باشه. چون دارم از نسخه 2019 استفاده میکنم که از سایت رسمی ماکروسافت دانلود کردم.
بزارید کمی واضح تر توضیح بدم:
من دارم بر اساس چیزی که در این آدرس توضیح داده شده سعی میکنم که EF رو یاد بگیرم
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
همانطور که مشخصه در این صفحه توضیح داده که کلاس base constractor در کلاس context میتونه سه حالت داشته باشه:
1. حالت بدون پارامتر یا حالت defult
فرض کنید که من یک کلاس به نام student و یک کلاس به نام grade تعریف کردم که هرکدوم از این کلاس ها پارامتر های خودشون رو دارند و با استفاده از کلید خارجی student_ID با هم در ارتباط هستند.
حالا وقتی من کلاس context رو به شکل زیر تعریف کنم و برنامه رو کامپایل کنم VS به طور اتوماتیک یک دیتابیس sql با نام ترکیبی فضای نام(Name space) و نام کلاس Context برام ایجاد میکنه.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در اینجا یک دیتابیس با نام First_EF_TEST.SchoolContext تولید میشود
2. حالتی که میشه نام دیتابیس رو در کلاس context انتخاب کرد
اگه من در داخل کلاس Context بخوام میتونم نام بانک داده رو خودم انتخاب کنم فقط کافیه که کد زیر رو در کلاس context تغییر بدم
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
که با تعریف کد بالا برای من یک دیتابیس با نامی که به صورت قرمز هایلایت شده ایجاد شده ساخته میشه.
خوب تا اینجای کار من هیچ مشکلی ندارم
در اینجا یک دیتابیس با نام SchoolDB تولید میشود
3. حالتی که من فقط نام connection string رو به کلاس context ارجاع میدم
در این حالت من باید connection string رو در app.config بسازم و اونو به کلاس context آدرس دهی کنم . که متاسفانه این قسمت شدنی نیست.
من تمامی مراحل رو پله پله طبق چیزی که توی همون وبسایت توضیح داده شده طی میکنم ولی نمی دونم کجای کار اشتباهه که برنامه نمی تونه connection string من رو بشناسه.
البته توی app.config من یک قسمتی به طور اتوماتیک توسط VS ساخته میشه که در واقع provider رو تعریف میکنه. من حدس میزنم که شاید مشکل از اون باشه!!!
خلاصه نمی دونم مشکل کجاست فقط چند روزه که حسابی رفته روی اعصابم و نمی تونم ادامه کار رو یاد بگیرم.
سلام مجدد
واقعا عذر خواهی میکنم در ماه گذشته چندین کار پشت سر هم و فشرده برایم رخ داد که ... میبخشید! :»
احتمال زیادی میدهم که تا حالا باید مشکل تان حل شده باشد که انشاا... چنین است :happy: و البته شرمندگی رها کردن تاپیک می ماند برای من :sad:
اگر حل نشده ...
اینطور که شما میفرمائید حدس میزنم باید مشکلی در همان app.config داشته باشید.
دقت کنید که app.config فقط برای پروژه های exe تحت NetFramework است.
مثلا مطالب مرتبط با آن بدین شکل در NetCore کاربرد ندارد.
در تحت وب هم بجای آن و شبیه آن web.config را داریم.
دقت کنید که اگر پروژه تان dll یا همان ClassLibrary است، تغییرات فوق را باید در app.config فایل exe ای که startup است انجام دهید یا در web.config سایتی که startup است.
دقت کنید که در پروژه های exe و پس از کامپایل ، فایل app.config در خروجی به نام فایل exe تان rename میشود.
یعنی در خروجی برنامه و بعد کامپایل یا در زمان تحویل پروژه فایل app.config میشود filename.exe.config
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگر فایل app.config شما درست شناسایی شده باشد باید در مسیر bin\Debug پروژه فایل filename.exe.config را با همان مقادیر داشته باشد، آیا اینطور است؟
در نهایت اگر مشکل تان حل نشد، لطفا فایلی آپلود کنید تا مشکل را یافته و اطلاع دهم.
مجدد پوزش میخواهم و شب خوش.
am_merman01
18-02-2020, 09:17
سلام مجدد
واقعا عذر خواهی میکنم در ماه گذشته چندین کار پشت سر هم و فشرده برایم رخ داد که ... میبخشید! :»
احتمال زیادی میدهم که تا حالا باید مشکل تان حل شده باشد که انشاا... چنین است :happy: و البته شرمندگی رها کردن تاپیک می ماند برای من :sad:
سلام خدمت استاد عزیز
این چه حرفیه شما همیشه به من و بقیه دوستان لطف داشتید.
خداروشکر مشکل من حل شده و علاوه بر EF 6 الان دیگه یادگیری EF Core رو هم تقریبا تموم کردم و دارم سعی میکنم چندتا کار تمرینی انجام بدم تا بهش تسلط پیدا کنم.
اتفاقا مشکلم با کمک نمونه ای که شما برام گذاشته بودید حل شد. انقدر مشکل ساده بود که باورم نمی شد.
ولی خب بد نیست توضیح بدم شاید این مشکل برای بقیه هم پیش بیاد.
و اما مشکل مربوط میشد به کانکشن استرینگ:
توی حالت عادی معمولا وقتی توی سرور local (کامپیوتر خودمون) کار میکنیم میشه بجای نوشتن کامل آدرس سرور فقط یک نقطه گذاشت و اینجوری ماکروسافت خودش آدرس کامل سرور رو به برنامه ارجاع میده.
اما به طور عجیبی با اینکه توی خود سایت ماکروسافت از همون نقطه توی EF استفاده کرده بود اما برنامه اون رو نمیشناخت و حتما باید آدرس کامل سرور رو بهش میدادیم.
بنابراین اگر از دوستان شخصی قصد داشت از نمونه ای که من توی چند پست قبل گذاشتم استفاده کنه باید بجای نقطه کل آدرس رو بنویسه.
و من ا... توفیق
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.