سلام دوست عزیز.منم مشکل شما رو داشتم با استفاده از کد خودت ایرادهایی رو که داشت گرفتم و در اخر هم برام جواب داد.اینم کدش. موفق باشی
backup
 string command = @"BACKUP DATABASE [" + Application.StartupPath + "\\ensani.mdf] TO DISK = N'" + strFileName + "' WITH NOFORMAT, NOINIT,  NAME = N'accounting-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10";
this.Cursor = Cursors.WaitCursor;
SqlCommand oCommand = null;
SqlConnection oConnection = null;

string scnn = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\ensani.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
oConnection = new SqlConnection(scnn);
if (oConnection.State != ConnectionState.Open)
oConnection.Open();
oCommand = new SqlCommand(command, oConnection);
oCommand.ExecuteNonQuery();
this.Cursor = Cursors.Default;
oConnection.Close();




Restore
 SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector  y|\ensani.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
con.Open();
string s1 = "ALTER DATABASE [" + Application.StartupPath + "\\ensani.mdf] SET OFFLINE WITH ROLLBACK IMMEDIATE";
string s2 = "ALTER DATABASE [" + Application.StartupPath + "\\ensani.mdf] SET MULTI_USER";
string query = "RESTORE DATABASE [" + Application.StartupPath + "\\ensani.mdf] FROM DISK ='" + strFileName + "' WITH RECOVERY,REPLACE";
SqlCommand cmd = new SqlCommand();
cmd.CommandText = s1;
cmd.Connection = con;
cmd.ExecuteNonQuery();

cmd.CommandText = s2;
cmd.Connection = con;
cmd.ExecuteNonQuery();

cmd.CommandText = query;
cmd.Connection = con;
cmd.ExecuteNonQuery();

con.Close();