main
 1using gorilla.utility;
 2
 3namespace solidware.financials.service.orm
 4{
 5    public class DB40UnitOfWorkFactory : UnitOfWorkFactory
 6    {
 7        readonly ConnectionFactory factory;
 8        readonly Context context;
 9        Key<Connection> key = new TypedKey<Connection>();
10
11        public DB40UnitOfWorkFactory(ConnectionFactory factory, Context context)
12        {
13            this.factory = factory;
14            this.context = context;
15        }
16
17        public UnitOfWork create()
18        {
19            if( context.contains(key)) return new EmptyUnitOfWork();
20
21            var connection = factory.Open();
22            context.add(key, connection);
23            return new DB4OUnitOfWork(connection, context);
24        }
25    }
26}