using System.ComponentModel; using System.Linq; using BenchmarkDotNet.Attributes; using RepoDb; using RepoDb.DbHelpers; using RepoDb.DbSettings; using RepoDb.StatementBuilders; namespace Dapper.Tests.Performance { [Description("RepoDB")] public class RepoDbBenchmarks : BenchmarkBase { [GlobalSetup] public void Setup() { BaseSetup(); GlobalConfiguration.Setup().UseSqlServer(); // We need this since benchmarks using System.Data.SqlClient var dbSetting = new SqlServerDbSetting(); DbSettingMapper .Add(dbSetting, true); DbHelperMapper .Add(new SqlServerDbHelper(), true); StatementBuilderMapper .Add(new SqlServerStatementBuilder(dbSetting), true); ClassMapper.Add("Posts"); } [Benchmark(Description = "Query")] public Post Query() { Step(); return _connection.Query(i).First(); } [Benchmark(Description = "QueryWhere")] public Post QueryWhere() { Step(); return _connection.Query(x => x.Id == i).First(); } [Benchmark(Description = "QueryDynamic")] public Post QueryDynamic() { Step(); return _connection.Query(new { Id = i }).First(); } [Benchmark(Description = "QueryField")] public Post QueryField() { Step(); return _connection.Query(new QueryField[] { new(nameof(Post.Id), i) }).First(); } [Benchmark(Description = "ExecuteQuery")] public Post ExecuteQuery() { Step(); return _connection.ExecuteQuery("select * from Posts where Id = @Id", new { Id = i }).First(); } } }