Если вы хотите обновить ИЛИ вставить данные, вам нужно использовать merge
:
merge MyTable t using (select @index index, @type type, @value value) s on
t.index = s.index
and t.type = s.type
when not matched insert (index, type value) values (s.index, s.type, s.value)
when matched update set value = s.value;
. При этом будут проверены ваши значения и выполнены соответствующие действия.
Чтобы сделать это в C #, вы должны использовать традиционный SqlClient
:
SqlConnection conn = new SqlConnection("Data Source=dbserver;Initial Catalog=dbname;Integrated Security=SSPI;");
SqlCommand comm = new SqlCommand();
conn.Open();
comm.Connection = conn;
//Add in your values here
comm.Parameters.AddWithValue("@index", index);
comm.Parameters.AddWithValue("@type", type);
comm.Parameters.AddWithValue("@value", value);
comm.CommandText =
"merge MyTable t using (select @index index, @type type, @value value) s on " +
"t.index = s.index and t.type = s.type " +
"when not matched insert (index, type value) values (s.index, s.type, s.value) " +
"when matched update set value = s.value;"
comm.ExecuteNonQuery();
comm.Dispose();
conn.Close();
conn.Dispose();