using System.Collections.Generic;
public static void Main()
var cnxn = new ReadModelConnection();
var repo = new QualificationRepository(cnxn);
Console.Write("Finding 1: ");
Console.WriteLine(repo.FindById(1));
public interface IUnitOfWork<T>
void RegisterNew(T anAggregate);
void RegisterDirty(T anAggregate);
void RegisterDeleted(T anAggregate);
public class Qualification {}
public class ReadModelUnitOfWork: IUnitOfWork<Qualification>
public ReadModelUnitOfWork(ReadModelConnection aConnection)
Qualifications = new QualificationRepository(aConnection);
public void RegisterNew(Qualification anAggregate)
public void RegisterDirty(Qualification anAggregate)
public void RegisterDeleted(Qualification anAggregate)
public QualificationRepository Qualifications { get; private set; }
public class DbContext: IDisposable
List<string> qualifications = new List<string>{"one","two","three"};
public List<string> Qualifications
Console.WriteLine("DbContext disposing.");
foreach(var q in qualifications)
Console.WriteLine("=================\n");
public class ReadModelConnection
public ReadModelConnection()
using(var context = new DbContext())
Console.WriteLine("Exiting Context " + instance + " property using block.");
public class QualificationRepository
ReadModelConnection connection;
public QualificationRepository(ReadModelConnection aConnection)
connection = aConnection;
public string FindById(int id)
using(var context = connection.Context)
Console.WriteLine("exiting FindById using block");
return context.Qualifications[id];
public void Add(string str)
using(var context = connection.Context)
context.Qualifications.Add(str);
Console.WriteLine(context.Qualifications[3]);