Skip to content

Instantly share code, notes, and snippets.

@einarwh
einarwh / Client1.cs
Created June 20, 2011 13:42
Dry data: Naive data client
public class Client1
{
private readonly string _connStr;
private readonly DbProviderFactory _dpf;
public Client1(string connStr) : this(connStr,
DbProviderFactories.GetFactory("System.Data.SqlClient"))
{}
@einarwh
einarwh / Client2.cs
Created June 20, 2011 16:48
Dry data: Refactored naive client with generic methods
public class Client2
{
private readonly string _connStr;
private readonly DbProviderFactory _dpf;
public Client2(string connStr) : this(connStr,
DbProviderFactories.GetFactory("System.Data.SqlClient"))
{}
@einarwh
einarwh / Execute.cs
Created June 20, 2011 18:03
Dry data: Main execute method
public TResult Execute<T, TResult>(string spName,
DbParameter[] sqlParams, Func<IDbCommand, T> execute,
Func<T, TResult> map)
{
using (var conn = _dpf.CreateConnection())
using (var cmd = _dpf.CreateCommand())
{
conn.ConnectionString = _connStr;
conn.Open();
cmd.Connection = conn;
@einarwh
einarwh / Database.cs
Created June 20, 2011 18:04
Dry data: Database class
public class Database
{
private readonly string _connStr;
private readonly DbProviderFactory _dpf;
public Database(string connStr): this(connStr,
DbProviderFactories.GetFactory("System.Data.SqlClient"))
{}
@einarwh
einarwh / Client4.cs
Created June 20, 2011 18:08
Dry data: Client using the Database class.
public class Client4
{
private readonly Database _db;
public Client4(Database db)
{
_db = db;
}
public IEnumerable<User> GetCompanyUsers(string company)
@einarwh
einarwh / StoredProcedure.cs
Created June 20, 2011 18:13
Dry data: StoredProcedure class (aka "the parameter sponge")
public class StoredProcedure
{
private readonly DbProviderFactory _dpf;
private readonly DbCommand _sp;
public StoredProcedure(DbCommand sp, DbProviderFactory dpf)
{
_sp = sp;
_dpf = dpf;
}
@einarwh
einarwh / ExecuteRefactored.cs
Created June 20, 2011 18:15
Dry data: Main execute method refactored.
public TResult Execute<T, TResult>(string spName,
Func<StoredProcedure, StoredProcedure> configure,
Func<IDbCommand, T> execute,
Func<T, TResult> map)
{
using (var conn = _dpf.CreateConnection())
using (var cmd = _dpf.CreateCommand())
{
conn.ConnectionString = _connStr;
conn.Open();
@einarwh
einarwh / Client5.cs
Created June 20, 2011 18:18
Dry data: Final version of the client
public class Client5
{
private readonly Database _db;
public Client5(Database db)
{
_db = db;
}
public IEnumerable<User> GetCompanyUsers(string company)
@einarwh
einarwh / Database.final.cs
Created June 28, 2011 11:00
DRY data: Final version of Database.cs
public class Database
{
private readonly string _connStr;
private readonly DbProviderFactory _dpf;
public Database(string connStr) : this(connStr,
DbProviderFactories.GetFactory("System.Data.SqlClient"))
{ }
@einarwh
einarwh / Incrementer.cs
Created October 4, 2011 23:08
Simple iterator for the positive integers.
public class Incrementer : IEnumerable<int>
{
public IEnumerator<int> GetEnumerator()
{
return new IncrementingEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();