PDA

View Full Version : طریقه اتچ کردن دیتابیس در EF



ho3ein.3ven
پنج شنبه 14 شهریور 1392, 00:25 صبح
سلام و خسته نباشید خدمت اساتید گرامی
من از ویژوال استدیو 2010 و اس کیو ال سرور 2008 استفاده می کنم . برای اتچ کردن دیتابیسم باید چه کار هایی رو انجام بدم که در کامپیوتر مقصد بدون هیچ کار اضافی دیتابیس ایجاد بشه .
جستجو هم زیاد انجام دادم ولی نتیجه نداده . خواهشا اگه دوستان می تونن منو تو این زمینه راهنمایی کنن.
با تشکر.

Salah Sanjabian
پنج شنبه 14 شهریور 1392, 11:05 صبح
سلام این تاپیکو نگاه کن . میتونی از کانکشن استرینگی که تو فایل کانفیگ دخیره میشه استفاده کنی
http://barnamenevis.org/showthread.php?412179-%D8%A8%D8%A7%D9%86%DA%A9-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA%DB%8C-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D8%AA%D8%AD%D8%AA-%D8%B4%D8%A8%DA%A9%D9%87&p=1839994#post1839994

ho3ein.3ven
پنج شنبه 14 شهریور 1392, 11:22 صبح
ببخشید محتویات کانفیگ من به صورت زیر است :
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="Model1container1" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\sqlexpress;Initial Catalog=amlak5;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>


باید به چه صورت ویرایش کنم ؟

Salah Sanjabian
پنج شنبه 14 شهریور 1392, 11:59 صبح
به این صورت میتونی از کانکشن استرینگ استفاده کنی

DataBaseEntities dataBase = new DataBaseEntities();
SqlConnection connection =(SqlConnection) (dataBase.Connection as EntityConnection).StoreConnection;

ho3ein.3ven
پنج شنبه 14 شهریور 1392, 16:01 عصر
ببخشید کد بالا رو کجا باید قرار بدم ؟

Salah Sanjabian
پنج شنبه 14 شهریور 1392, 16:24 عصر
دوست عزیز این کد رو نگا کنید ، این کد داره از ADO.NET واسه این کار استفاده میکنه چون شما داری از EF استفاده میکنی پس واسه استفاده از ConnectionString تو فایل کانفیگت از کد بالا استفاده کن و به جای ConnectionString زیر قرارش بده. خلاصه این کد باید اول برنامه ت اجرا بشه . اگه دیتابیس از قبل اتچ شده دیگه اتچ نمیکنه در غیر اسن صورت انچ میکنه دیتابیست رو

SqlConnection Connection = new SqlConnection("server=.\\sqlexpress;initial catalog=master;integrated security=true");
SqlCommand Cmd = new SqlCommand("select count(*) from sysdatabases where name='YourDBName'", Connection);
Connection.Open();
Result = System.Convert.ToInt32(Cmd.ExecuteScalar());
if (Result == 0)
{
Cmd = new SqlCommand("exec sp_attach_db @dbname='YourDBName',@filename1='" + System.Environment.CurrentDirectory.ToString() + "\\YourDBName.mdf',@filename2='" + System.Environment.CurrentDirectory.ToString() + "\\YourDBName_log.ldf'",Connection);
Cmd.ExecuteNonQuery();
MessageBox.Show("Successful");
}
else
MessageBox.Show("DB already exists");

ho3ein.3ven
پنج شنبه 14 شهریور 1392, 18:46 عصر
من این کد رو به صورت زیر ویرایش کردم ولی اررور میده :
int Result;
SqlConnection Connection = new SqlConnection("server=.\\sqlexpress;initial catalog=master;integrated security=true");
SqlCommand Cmd = new SqlCommand("select count(*) from sysdatabases where name='MoshaverDB.mdf'", Connection);
Connection.Open();
Result = System.Convert.ToInt32(Cmd.ExecuteScalar());
if (Result == 0)
{
Cmd = new SqlCommand("exec sp_attach_db @dbname='MoshaverDB',@filename1='" + System.Environment.CurrentDirectory.ToString() + "\\MoshaverDB.mdf',@filename2='" + System.Environment.CurrentDirectory.ToString() + "\\MoshaverDB_log.ldf'", Connection);
Cmd.ExecuteNonQuery();
MessageBox.Show("Successful");
}
else
MessageBox.Show("DB already exists");


این قسمت Cmd.ExecuteNonQuery();ارور داره.

Salah Sanjabian
پنج شنبه 14 شهریور 1392, 20:22 عصر
دوست عزیز Error چی میده؟ BreakPoint بذارید ببینید جزئیات Erro ی که دارین مربوط به چیه. کد که مشکلی نداره فقطا باید ببینید خطا مربوط به چیه

ho3ein.3ven
پنج شنبه 14 شهریور 1392, 20:49 عصر
اینم ارورش :
110213

Salah Sanjabian
پنج شنبه 14 شهریور 1392, 21:19 عصر
مسیر رو عوض کنید ببینید درست میشه یا نه . راه حل های مختلف رو امتحان کنید. در ضمن View Detail همین پیغام خطا رو نگاه کنید ببینید تو جزئیات چه اطلاعات دیگه ای در مورد خطا میده بهتون .

ho3ein.3ven
جمعه 15 شهریور 1392, 00:14 صبح
لینک پروژه رو براتون فرستادم . اگه ممکنه بررسیش کنین . چون من هر کاریش کردم درست نشد.