Перехожу на ms sql с mysql и дико страдаю по конструкции INSERT ... ON DUPLICATE KEY UPDATE в MySQL. Это офигенно удобная конструкция - указываешь полную инструкцию для вставки записей в базу и отдельно поля, которые надо обновить, если запись подпадает под уникальный существующий индекс в таблице.
Почему MSSQL не соответствует стандартам ANSI-92 - отдельный разговор. Но конструкция MERGE просто ужасна, когда нужно вставлять-обновлять тысячи строк и писать её - одно мучение.
Может быть, есть какие-то библиотеки для C# или какие-то хитрые реализации bulk upsert для самого ms sql через генерацию кода и команду EXEC?
По-моему наиболее читабельный и вполне оперативный - разделить insert и update, что собственно merge с другого профиля. По крайней мере пока про insert or update - ms молчит как рыба об лед...