У меня есть этот код, который работает нормально, и я обновляю значение, если существует, или вставляю, если нет
List<KodikosProtimisis> newList = new List<KodikosProtimisis>();
newList.Add(new KodikosProtimisis { Kodikos = "100", Perigrafi = "Description", TaricTiposMetrou = "103" });
newList.Add(new KodikosProtimisis { Kodikos = "110", Perigrafi = "Description", TaricTiposMetrou = "112" });
newList.Add(new KodikosProtimisis { Kodikos = "420", Perigrafi = "Description", TaricTiposMetrou = "112" });
.
.
.
(more values)
string connectionString = Configuration.Parameters.Config.ConnectionString;
string query = @"IF EXISTS(SELECT * FROM dbo.KodikosProtimisis WHERE Kodikos = @kodikos and DiasafistisId=@diasafistisId)
UPDATE dbo.KodikosProtimisis
SET Kodikos = @kodikos, DiasafistisId=@diasafistisId,Perigrafi=@perigrafi,TaricTiposMetrou = @taricTiposMetrou
WHERE Kodikos = @kodikos and DiasafistisId=@diasafistisId or DiasafistisId is null
ELSE
INSERT INTO dbo.KodikosProtimisis(Kodikos, Perigrafi,TaricTiposMetrou, DiasafistisId) VALUES(@kodikos, @perigrafi,@taricTiposMetrou, @diasafistisId);";
foreach (var person in newList)
{
using (SqlConnection conn = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand(query, conn))
{
//δίνουμε τις παραμέτρους στο ερώτημα μας
cmd.Parameters.Add("@kodikos", SqlDbType.NVarChar, 100).Value = person.Kodikos;
cmd.Parameters.Add("@perigrafi", SqlDbType.NVarChar, 200).Value = person.Perigrafi;
cmd.Parameters.Add("@diasafistisId", SqlDbType.Int, 100).Value = DefaultDiasafistis.DiasafistisDefault.Id;
cmd.Parameters.Add("@taricTiposMetrou", SqlDbType.NVarChar, 150).Value = person.TaricTiposMetrou;
conn.Open();
int rowsAffected = cmd.ExecuteNonQuery();
conn.Close();
}
}
С помощью этого кода мне удается выполнить работу только с одним запросом к SQL, но мне было интересно, есть ли более простой или более изящный способ сделать это.
Например, могу ли я использовать выражения linq и lambda (с которыми у меня мало опыта).
Я хочу (если это возможно) удалить запрос и поместить что-то, что я могу контролировать, более легким и наиболее важным, чтобы поддерживать его легко, если что-то меняется, например, дизайн базы данных или что-то массово изменить в существующих значениях.
РЕДАКТИРОВАТЬ: Я действительно не понимаю, почему у меня есть отрицательные голоса. Я даю определенный c код, который уже работает, и спрашиваю, есть ли лучший способ.