PDA

View Full Version : کانکشن استرینگ در EF



csharpprogramer88
پنج شنبه 14 اسفند 1393, 19:52 عصر
سلام

در پروژه ای با SQL server 2012 , VS2012 فایل دیتابیس را داخل Bin/debug قرار دادم ولی ارور زیر را میده

کانکشن استرینگ را چطوری تغیر بدم که از دیتابیس من بخونه


کانکشن استرینگ :


provider=System.Data.SqlClient;provider connection string="data source=(LocalDB)\v11.0;attachdbfilename=|DataDirec tory|\bin\Debug\DB_amar.mdf;integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=Entit yFramework"" providerName="System.Data.EntityClient" />



لطفا راهنمایی کنین چیکار کنم برای ستاب ساری هم مشکلی با دیتابیس نباشه

ممنونم

ali_md110
پنج شنبه 14 اسفند 1393, 21:43 عصر
attachdbfilename=|DataDirec tory|دقیقا مسیری که میخواید هست و bin\Debug دیگه اضافه هست پس از زشته اتصال حذف کنید


provider=System.Data.SqlClient;provider connection string="data source=(LocalDB)\v11.0;attachdbfilename=|DataDirec tory|\DB_amar.mdf;integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=Entit yFramework"" providerName="System.Data.EntityClient" />



همین رشته اتصال برای Setup هم جوابگو هست و مشکلی ندارد

علی فتحی
پنج شنبه 14 اسفند 1393, 23:38 عصر
http://barnamenevis.org/showthread.php?488145-%D8%A8%DB%8C%D8%B1%D9%88%D9%86-%DA%A9%D8%B4%DB%8C%D8%AF%D9%86-%DA%A9%D8%AF-app-confing-%D9%88-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%DA%A9%D8%AF-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AF%D8%B1ef&p=2183677#post2183677

csharpprogramer88
پنج شنبه 14 اسفند 1393, 23:45 عصر
<add name="DB_amarEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl; provider=System.Data.SqlClient;provider connection string=&quot;data source=(LocalDB)\v11.0;attachdbfilename=|DataDirec tory|\DB_amar.mdf;integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=Entit yFramework&quot;" providerName="System.Data.EntityClient" />


این کانکشن استرینگی که شما فرمودی ولی بازم این ارور را میده



The underlying provider failed on ConnectionString.




لطفا راهنمایی کنین باتشکر

ali_md110
جمعه 15 اسفند 1393, 00:39 صبح
از این کانکشن استفاده کنید شاید جواب داد
اگر خطا داد قسمت User Instance پاکش کنید




<connectionStrings>

<add name="SQLDBEntities" connectionString="metadata=res://*/SplDBModel.csdl|res://*/SplDBModel.ssdl|res://*/SplDBModel.msl;provider=System.Data.SqlClient;prov ider connection string="data source=(LocalDB)\v11.0;attachdbfilename=|DataDirec tory|\DB_amar.mdf;integrated security=True;user instance=True;MultipleActiveResultSets=True;App=En tityFramework;" providerName="System.Data.EntityClient />

</connectionStrings>

csharpprogramer88
جمعه 15 اسفند 1393, 09:45 صبح
از این کانکشن استفاده کنید شاید جواب داد
اگر خطا داد قسمت User Instance پاکش کنید




<connectionStrings>

<add name="SQLDBEntities" connectionString="metadata=res://*/SplDBModel.csdl|res://*/SplDBModel.ssdl|res://*/SplDBModel.msl;provider=System.Data.SqlClient;prov ider connection string="data source=(LocalDB)\v11.0;attachdbfilename=|DataDirec tory|\DB_amar.mdf;integrated security=True;user instance=True;MultipleActiveResultSets=True;App=En tityFramework;" providerName="System.Data.EntityClient />

</connectionStrings>




پاکش هم کردم این ارور را میده





<connectionStrings>




<add name="DB_amarEntities" connectionString="metadata=res://*/SplDBModel.csdl|res://*/SplDBModel.ssdl|res://*/SplDBModel.msl;provider=System.Data.SqlClient;prov ider connection string=&quot;data source=(LocalDB)\v11.0;attachdbfilename=|DataDirec tory|\DB_amar.mdf;integrated security=True;MultipleActiveResultSets=True;App=En tityFramework&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>





لطفا راهنمایی کنین

باتشکر

csharpprogramer88
جمعه 15 اسفند 1393, 09:51 صبح
کانکشن استرینگ من در App Config هست

plus
جمعه 15 اسفند 1393, 10:04 صبح
شما آدرس این صورت دادین:

|DataDirectory|\bin\Debug\DB_amar.mdf

در صورتی که اگه اشتباه نکنم، بجای DataDirectory محل جاری فایل exe جایگزین میشه. با فرض اینکه فایل دیتابیس کنار فایل exe هست، بجاش از

|DataDirectory|DB_amar.mdf

استفاده کنید باید حل بشه.

elec60
جمعه 15 اسفند 1393, 10:29 صبح
من درگیر ConnectionString نمیشم، از حالت دیفالتی که تو app.config وجود داره استفاده میکنم و تو کلاس DbContext هم تو سازنده که سازنده base هم صدا زده میشه اسم دیتابیس رو به base پاس میدم، مثلا ("base("IODB
در اینصورت اگه دیتابیسی با این اسم تو SQL ای که تو حالت دیفالت app.config ست کردم وجود نداشت اونو با توجه به مدلم(از روش Code First استفاده میکنم) میسازه و اگه وجود داشت ازش استفاده میکنه.

اگر هم بعدا قرار شد به دیتابیسی که حاوی اطلاعات هست ستونی اضافه بشه با استفاده از Migration میشه این کار رو انجام داد که البته هنوز تستش نکردم.

کلا دو سه هفته بیشتر نیست که از EF استفاده میکنم و به این نتیجه رسیدم که خیلی بهتر از روشهای سنتی هست و منهای سرعتش(که اونم میشه با روشهایی بهبود داد) تمام قامت سرتر از همه روشهاست. سرعت توسعه بسیار بالاتر، پر کردن gap بین دنیای شیرین object oriented با دنیای مزخرف T-SQL، دیباگینگ بسیار راحتتر، maintenance بسیار راحت تر...

احتمالا مزایای دیگه ای هم داره که چون تازه استارت زدم هنوز دستم نیومده

یجورایی برای مقایسه میشه گفت به همون میزان که WPF از WinForms سرتره EF هم از سایر تکنولوژی های مرتبط با دیتابیس سرتره

csharpprogramer88
جمعه 15 اسفند 1393, 10:43 صبح
شما آدرس این صورت دادین:

|DataDirectory|\bin\Debug\DB_amar.mdf

در صورتی که اگه اشتباه نکنم، بجای DataDirectory محل جاری فایل exe جایگزین میشه. با فرض اینکه فایل دیتابیس کنار فایل exe هست، بجاش از

|DataDirectory|DB_amar.mdf

استفاده کنید باید حل بشه.


این کار را انجام دادم ولی همچنان حل نشده و مشکل دارم

csharpprogramer88
جمعه 15 اسفند 1393, 12:13 عصر
دوستان به این مورد دقت کنین که من از EF استفاده میکنم و کانکشن استرینگ من در app config هست . دیتابیس را در مسیر bin/debug قرار دادم

ali_md110
جمعه 15 اسفند 1393, 12:35 عصر
استاندارد کانکشن استرینگ همینه که توی فایل پیکربندی config برنامه باشه و ریشه برنامه هم bin\debug هست البته توجه کنید که حالت Bulid برنامه روی Debug هست یا Relase
شما دارید از روش DataBase First استفاده میکنید و وقتی که برای اولین بار به دیتابیس اتصال برقرار میکنید یک نام برای مدلتون انتخاب میکنید مثلا Model1

کانکشنی که تو پست 5 فرستادم شما باید SplDBModel رو تغییر بدید به کانتکس خودتون فرض کنید مثلا بجای Model1

این یک کانکشن فرضی هست



metadata=res://*/Context.Model1.csdl|res://*/Context.Model1.ssdl|res://*/Context.Model1.msl;provider=System.Data.SqlClient; provider connection string="data source=(LocalDB)\v11.0;attachdbfilename=|DataDirec tory|\DB_amar.mdf;integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=Entit yFramework"

csharpprogramer88
جمعه 15 اسفند 1393, 14:10 عصر
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections></configSections>
<connectionStrings>
<add name=" DB_amarEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=(LocalDB)\v11.0;AttachDbFilename=\DB_amar.m df;Integrated Security=True;Connect Timeout=30 &quot;" providerName="System.Data.EntityClient" />
<add name="DB_amarEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(LocalDB)\v11.0;attachdbfilename=|DataDirec tory|\bin\Debug\DB_amar.mdf;integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=Entit yFramework&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>


این اخرین کانکشنی هست ک به کمک یکی از دوستان امجام شده ولی باز هم ارور پست یک را میدهد . دوستان اگر کسی میتونه این کانکشن را اصلاح کنه ممنون میشم