Zacznijmy od usunięcia tego: utknąłem przy użyciu MS Access DB i nie mogę go zmienić.Dapper & MS Access - Czytaj prace, Napisz nie
Działa to dobrze:
using (OleDbConnection conn = ConnectionHelper.GetConnection())
{
conn.Open();
var results = conn.Query<string>(
"select FirstName from Students where LastName = @lastName",
new { lastName= "Smith" }
);
conn.Close();
}
Działa to dobrze:
using (OleDbConnection conn = ConnectionHelper.GetConnection())
{
OleDbCommand cmd = new OleDbCommand(
"update Students set FirstName = @firstName, City = @city where LastName = @lastName",
conn
);
cmd.Parameters.AddWithValue("firstName", "John");
cmd.Parameters.AddWithValue("city", "SomeCity");
cmd.Parameters.AddWithValue("lastName", "Smith");
conn.Open();
var result = cmd.ExecuteNonQuery();
conn.Close();
}
... To nie jest wykonywany bez błędu, ale ustawia FirstName jako "SomeCity" w DB i Miasto jako "Jan":
using (OleDbConnection conn = ConnectionHelper.GetConnection())
{
conn.Open();
var results = conn.Query<string>(
"update Students set FirstName = @firstName, City = @city where LastName = @lastName",
new { firstName = "John", city = "SomeCity", lastName = "Smith" }
);
conn.Close();
}
Jakieś pomysły?
Edycja
Wytworny działa, jeśli mogę użyć DynamicParameters:
using (OleDbConnection conn = ConnectionHelper.GetConnection())
{
DynamicParameters parameters = new DynamicParameters();
parameters.Add("firstName", "John");
parameters.Add("city", "SomeCity");
parameters.Add("lastName", "Smith");
conn.Open();
var result = conn.Query<string>(
"update Students set FirstName = @firstName, City = @city where LastName = @lastName",
parameters
);
conn.Close();
}
To dziwne .. Muszę spróbować powtórzenia błędu ... –
Uwaga: po prostu starał się odtworzyć z SQL Express 2008 i działa dobrze ... –
Robiłem to z powodzeniem z Sql Server ... więc myślę, że jest to z MS Access tylko – Trev