PDA

View Full Version : سوال: نحوه اتچ کردن DB در سیستم کاربر به صورت اتوماتیک، در Entity Frame Work به روش Data Base first



SokooteShab1
دوشنبه 14 مرداد 1392, 15:45 عصر
با سلام من یه پروژه دارم که با تکنولوژی WPF و Entity FrameWork نوشته شده روش ایجاد مدلم هم data base first هست مشکلم اینه که نمی دونم موقع نصب نرم افزار روی سیستم کاربر چه جوری باید به دیتا بیسم کانکت بشم باید البته در مورد Migration شنیدم ولی نمی دونم چه جوری باید استفاده کنم.
اگر راهنماییم کنید ممنون میشم.

رضا عربلو
سه شنبه 15 مرداد 1392, 07:24 صبح
اگر دیتابیس ات اس کیو ال است. تنها کافیه که conection string را در فایل کانفیگی که همنام فایل exe ات است در کامپیوتر مقصد تغییر بدی.

SokooteShab1
سه شنبه 15 مرداد 1392, 09:32 صبح
خب مشکل همینجاست. ممکنه بگید چه تغییری باید بدم؟؟

روح اله معینی زاده
سه شنبه 15 مرداد 1392, 09:47 صبح
سلام.
روی پروژه راست کلیک کنید و گزینه Properties رو انتخاب کنید. بعد در قسمت Settings -اگه اشتباه نکنم- یه متغیر برای ConnectionString تعریف کنید و مقدار بدهید.
با این کار فایلی که دوستان گفتند، ایجاد می شه و چون متنی است، از بیرون پروژه قابل تغییر است.
این هم یک نمونه کد که چه طور به این متغیر تعریف شده دست رسی داشته باشی


Dabir.Properties.Settings setting = new Dabir.Properties.Settings();
_connStr = setting.ConnStr;

در این مثال، Dabir نام پروژه است و ConnStr همان متغیری است که در محل مربوطه تعریف شده و در خط دوم به متغیر محلی connStr_ نسبت داده شده است.
موفق باشی

SokooteShab1
سه شنبه 15 مرداد 1392, 10:45 صبح
سلام.
روی پروژه راست کلیک کنید و گزینه Properties رو انتخاب کنید. بعد در قسمت Settings -اگه اشتباه نکنم- یه متغیر برای ConnectionString تعریف کنید و مقدار بدهید.
با این کار فایلی که دوستان گفتند، ایجاد می شه و چون متنی است، از بیرون پروژه قابل تغییر است.
این هم یک نمونه کد که چه طور به این متغیر تعریف شده دست رسی داشته باشی
1
2
3
Dabir.Properties.Settings setting = new Dabir.Properties.Settings();
_connStr = setting.ConnStr;

در این مثال، Dabir نام پروژه است و ConnStr همان متغیری است که در محل مربوطه تعریف شده و در خط دوم به متغیر محلی connStr_ نسبت داده شده است.
موفق باشی
ممنون از توضیحاتتون دوست عزیز.
ولی منظورم متن connection string ساخته شده با مدل بود که چه تغییری بدم که دیتا بیس اتوماتیک اتچ بشه خواهش میکنم اگه کسی می دونه کمک کنه.
متن connection string من اینه:
<connectionStrings><add name="XEntities" connectionString="metadata=res://*/Model.XEntities.csdl|res://*/Model.XEntities.ssdl|res://*/Model.XEntities.msl;provider=System.Data.SqlClient ;provider connection string=&quot;data source=SOMAYY\XSQLEXPRESS;initial catalog=X;integrated security=True;MultipleActiveResultSets=True;App=En tityFramework&quot;" providerName="System.Data.EntityClient" /></connectionStrings>

Mahmoud.Afrad
سه شنبه 15 مرداد 1392, 17:19 عصر
چون از نسخه express استفاده میکنید میتونید از AttachDbFilename استفاده کنید تا خودکار عمل اتچ و دیتچ انجام بشه.
اگر فایل دیتابیس کنار فایل اجرایی هست از کانکشن زیر استفاده کنید. به جای Database1.mdf نام دیتابیس خودتون رو بزارید. در App.config جایگذین کنید.

<connectionStrings>
<add name="XEntities" connectionString="metadata=res://*/Model.XEntities.csdl|res://*/Model.XEntities.ssdl|res://*/Model.XEntities.msl;provider=System.Data.SqlClient ;provider connection string=&quot;Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Database1.mdf;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient"/>
</connectionStrings>

SokooteShab1
چهارشنبه 16 مرداد 1392, 10:26 صبح
از این روش که استفاده می کنم هر جای برنامه که نیاز به ارتباط با دیتابیس داره با خطای زیر مواجه میشه.
108669

mymina
چهارشنبه 16 مرداد 1392, 10:37 صبح
دوست عزیز من هم همین مشکل رو دارم connectionstring به صورت زیر می باشد که آن را به صورت زیر تغییر دادم ولی برنامه اجرا نمی شود و خطا می دهد مشکل کجاست

<add name="dbAntiVirusEntities" connectionString="metadata=res://*/Antivirus.csdl|res://*/Antivirus.ssdl|res://*/Antivirus.msl;provider=System.Data.SqlClient;provi der connection string=&quot;Data Source=.;Initial Catalog=dbAntiVirus;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />




<add name="dbAntiVirusEntities" connectionString="metadata=res://*/Antivirus.csdl|res://*/Antivirus.ssdl|res://*/Antivirus.msl;provider=System.Data.SqlClient ;provider connection string=&quot;Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\dbAntiVirus.mdf;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient"/>

mymina
چهارشنبه 16 مرداد 1392, 13:37 عصر
دوستان من می خوام با install Shield برنامه setup برنامم را درست کنم ولی نحوه افزودن دیتابیس به install Shield رو نمی دونم برنامم با wpf و entity Framework نوشتم
یا اگر از روشی به جز install shield می دونید که با نصب برنامه دیتابیس در سیتم دیگر atach شود راهنمایی کنید

Mahmoud.Afrad
چهارشنبه 16 مرداد 1392, 20:11 عصر
از این روش که استفاده می کنم هر جای برنامه که نیاز به ارتباط با دیتابیس داره با خطای زیر مواجه میشه.
108669
روی سیستم خودت به جای sqlexpress نام نمونه XSQLEXPRESS رو قرار بده ولی روی سیستم مشتری همون sqlexpress.

Mahmoud.Afrad
چهارشنبه 16 مرداد 1392, 20:13 عصر
دوست عزیز من هم همین مشکل رو دارم connectionstring به صورت زیر می باشد که آن را به صورت زیر تغییر دادم ولی برنامه اجرا نمی شود و خطا می دهد مشکل کجاست

<add name="dbAntiVirusEntities" connectionString="metadata=res://*/Antivirus.csdl|res://*/Antivirus.ssdl|res://*/Antivirus.msl;provider=System.Data.SqlClient;provi der connection string=&quot;Data Source=.;Initial Catalog=dbAntiVirus;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />




<add name="dbAntiVirusEntities" connectionString="metadata=res://*/Antivirus.csdl|res://*/Antivirus.ssdl|res://*/Antivirus.msl;provider=System.Data.SqlClient ;provider connection string=&quot;Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\dbAntiVirus.mdf;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient"/>


این کانکشن برای نسخه express هست. اگر از این روش میخواهید استفاده کنید دیتابیس رو در نسخه express بساز. البته بعد از تغییر کانکشن میتونید از طریق خود مدل دیتابیس رو بسازید.

SokooteShab1
یک شنبه 20 مرداد 1392, 18:47 عصر
روی سیستم خودت به جای sqlexpress نام نمونه XSQLEXPRESS رو قرار بده ولی روی سیستم مشتری همون sqlexpress.
ممنون از راهنماییتون من هم همین کار رو می کردم ولی روی سیستم خودم هم جواب نمی ده و همون اررور رو میداد.

zahrasaffar
دوشنبه 21 مرداد 1392, 08:49 صبح
منم دقیقا همین مشکل رو با اتچ کردن دیتابیسم داشتم و آخر سر هم نتونستم با این روش درستش کنم و مجبور شدم از یک سری کد دیگه استفاده کنم . که تو این روش جدید هم ، بعد از یک بار اجرای برنامه ، اول برنامه میگه که دیتابیس قبلا وجود داره . البته باید با دیتچ کردن در موقع خروج از برنامه این مشکل حل شه
از این لینک میتونید کد رو ببینید :
http://www.irancsharp.net/Post-58.aspx
البته من هنوز به دنبال اینم که با استفاده از همون روش اول چجوری خطایی که دوستمون گذاشتن رو میشه برطرف کرد ؟

SokooteShab1
شنبه 26 مرداد 1392, 18:07 عصر
منم دقیقا همین مشکل رو با اتچ کردن دیتابیسم داشتم و آخر سر هم نتونستم با این روش درستش کنم و مجبور شدم از یک سری کد دیگه استفاده کنم . که تو این روش جدید هم ، بعد از یک بار اجرای برنامه ، اول برنامه میگه که دیتابیس قبلا وجود داره . البته باید با دیتچ کردن در موقع خروج از برنامه این مشکل حل شه
از این لینک میتونید کد رو ببینید :
http://www.irancsharp.net/Post-58.aspx
البته من هنوز به دنبال اینم که با استفاده از همون روش اول چجوری خطایی که دوستمون گذاشتن رو میشه برطرف کرد ؟من هم مشکلم با همین روش حل شد و برای حل مشکل دوم شما هم از batch file استفاده کردم و داخل Installer برنامه قرار دادم تا فقط موقع نصب برنامه دیتا بیس اتچ بشه.
به هر حال از همه دوستان متشکرم.
این هم batch file109233 که با پسوند .bat ذخیره میشه.

SokooteShab1
شنبه 26 مرداد 1392, 18:12 عصر
یه مشکل دیگه هم دارم کسی می دونه با warning 4154 موقع نصب sql express 2008 از طریق Advanced Installer چه باید کرد؟؟ خواهش میکنم اگه کسی کار کرده کمک کنه.
ممنون.

zahrasaffar
سه شنبه 16 مهر 1392, 16:54 عصر
من هم مشکلم با همین روش حل شد و برای حل مشکل دوم شما هم از batch file استفاده کردم و داخل Installer برنامه قرار دادم تا فقط موقع نصب برنامه دیتا بیس اتچ بشه.
به هر حال از همه دوستان متشکرم.
این هم batch file109233 که با پسوند .bat ذخیره میشه.

من نمیدونم batch file چیه و چجوری باید این فایله رو ایجاد کنم و دقیقا کجای برنامه م قرار بدم . میشه لطفا کامل مراحلشو برام بذارید ؟