using System.Data.SqlClient;
public Guid Id { get; set; }
public string Name { get; set; }
public int Score { get; set; }
public DateTime? LastModifiedDate { get; set; }
public class ScoreService
public void Upsert (PlayerScore playerScore)
string query = @"MERGE INTO dbo.ScoreDetail AS [Target]
USING (VALUES(@Id, @Name, @Score, @LastModifiedDate)) AS [Source] (Id, Name, Score, LastModifiedDate)
AND Target.Name = Source.Name
WHEN NOT MATCHED BY TARGET THEN
VALUES(Source.ID, Source.Name, Source.Score, Source.LastModifiedDate)
WHEN MATCHED AND Target.Score <> Source.Score THEN
Target.Score = Source.Score,
Target.LastModifiedDate = Source.LastModifiedDate
using(var connection = new SQLConnection("Connection String")
connection.Execute(query, playerScore);
string query = @"SELECT * FROM dbo.ScoreDetail ORDER BY SCORE ASC";
using(var connection = new SQLConnection("Connection String")
connection.Query<IList<PlayerScore>>(query, playerScore).FirstOrDefault;