PDA

View Full Version : سوال: ارور The underlying provider failed on Open هنگام exe کردن برنامه



r4hgozar
دوشنبه 09 آذر 1394, 13:16 عصر
سلام.
من برنامم رو exe کردم و وقتی تو سیستم مقصد نصب کردم به ارور The underlying provider failed on Open

می خودم.
برنامه اول اجرا میشه اما وقتی می خواد از دیتابیس استفاده کنه ارور میده.

ژیار رحیمی
دوشنبه 09 آذر 1394, 13:25 عصر
dllهای لازم مثل EntityFramework.dll وEntityFramework.SqlServer.dll برای انتقال به سیستم مقصد رو چک کردی؟

r4hgozar
دوشنبه 09 آذر 1394, 15:25 عصر
بله همه کپی شده.
در debug برنامه 24 آیتم هست و وقتی exe میشه هم 24 آیتم در سیستم مقصد قرار میگیره.

ژیار رحیمی
دوشنبه 09 آذر 1394, 17:46 عصر
دوست گرامی اگر امکانش هست کانکشن استرینگ رو بزارید.

r4hgozar
دوشنبه 09 آذر 1394, 17:51 عصر
حتما


<add name="db1Entities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\mydatabase.mdf;initial catalog=mydatabase;MultipleActiveResultSets=True;A pp=EntityFramework&quot;" providerName="System.Data.EntityClient" />

ژیار رحیمی
دوشنبه 09 آذر 1394, 18:11 عصر
providerName رو به اینصورت providerName=System.Data.SqlClientست کن ببین مشکل حل میشه

r4hgozar
سه شنبه 10 آذر 1394, 10:07 صبح
اگه این کار رو بکنم باز هم ارور میده و از metadata ارور میگیره

r4hgozar
سه شنبه 10 آذر 1394, 10:54 صبح
واقعا واسه کسی پیش نیومده؟؟
پس شما چطوری فایل هاتون رو exe می کنید؟

ژیار رحیمی
سه شنبه 10 آذر 1394, 11:11 صبح
این لینکم بررسی کن ببین به نتیجه میرسی
http://blogs.msdn.com/b/dataaccesstechnologies/archive/2012/08/09/error-quot-the-underlying-provider-failed-on-open-quot-in-entity-framework-application.aspx

r4hgozar
سه شنبه 10 آذر 1394, 11:23 صبح
ممنون اقای رحیمی بابت پیگیری شما.
من اگه این خط کد رو پاک کنم ;AttachDbFilename=|DataDirector y|\mydatabase.mdf

برنامه درست کار می کنه.
اما نمی تونم بفهمم چرا؟

ژیار رحیمی
سه شنبه 10 آذر 1394, 12:05 عصر
به نظر من شما Sql server رو بصورت Local در سیستم دیگه نصب کردی.الان روی سیستم خودت بصورت SQLEXPRESS نصب شده مشکلی نداره با ConnectionString خود وصل میشه ولی در سیستم دیگه شما Instance نصب شده Local هست. وبا ConnectionString جاری کار نخواهد کرد .

r4hgozar
سه شنبه 10 آذر 1394, 19:20 عصر
خوب الان باید چی کار کنم؟

elec60
چهارشنبه 11 آذر 1394, 01:21 صبح
تو رشته اتصال Integrated Security رو هم در نظر بگيريد

ژیار رحیمی
چهارشنبه 11 آذر 1394, 06:56 صبح
خب دوست گرامی الان مشکل از برنامه شما نیست جهت همسان سازی Instance های دو سیستم کافیه روی سیستم دیگه اقدام به نصب نمونه Express اسکیول سرور کنی (بدون تغییر ConnectionString) برنامه شما روی سیستم دیگه کار خواهد کرد.

r4hgozar
چهارشنبه 11 آذر 1394, 10:17 صبح
خب دوست گرامی الان مشکل از برنامه شما نیست جهت همسان سازی Instance های دو سیستم کافیه روی سیستم دیگه اقدام به نصب نمونه Express اسکیول سرور کنی (بدون تغییر ConnectionString) برنامه شما روی سیستم دیگه کار خواهد کرد.


این کار رو انجام دادم. هر 2 سیستم express زو دارن.

ژیار رحیمی
چهارشنبه 11 آذر 1394, 11:15 صبح
این کار رو انجام دادم. هر 2 سیستم express زو دارن.

هنوز خطا رو داری؟

r4hgozar
چهارشنبه 11 آذر 1394, 16:45 عصر
بله.
جالبه رو سیستم مشتری هم خطا رو دارم.
جالبه اومدم و به صورت کد فرست کردم پروژم رو البته در پوشه دیگه



static CarwashDBContext()
{
System.Data.Entity.Database.SetInitializer(new CreateDatabaseIfNotExists<CarwashDBContext>());
}
public DbSet<Cartype> Cartypes { get; set; }
public DbSet<Customer> Customers { get; set; }
public DbSet<Factor> Factors { get; set; }


واسم دیتابیس رو نمی سازه.
دقیقا همین کد رو تو mvc میزنم یک ساله کلی سایت باهاش نوشتم !!!!!

ژیار رحیمی
چهارشنبه 11 آذر 1394, 18:10 عصر
اگر نمی سازه یعنی دیتابیس ساخته شده (CreateDatabaseIfNotExists) شما در چند پس پست قبلی بهش اشاره کردی که وقتی قسمتAttachDbFilename=|DataDirectory|\mydatabas e.mdf رو حذف کردی پروژه ت اجرا شده این موضوع به این دلیه که در نمونه local اسکیول سرور دیتابیس شما Attach شده.شما کافیست با sql server managment لاگین بشو ودیتابیس قبلی رو حذف کنی تا مشکل ایجاد database از طریق Code first حل شود

r4hgozar
پنج شنبه 12 آذر 1394, 08:53 صبح
اقای رحیمی ممنون از پیگیزی شما.
اما مجور شدم از کد فرست استفاده کنم برای فیکس کردن ارور.