/// <summary> /// Find the first / only object that matches the given criteria. /// </summary> /// <typeparam name="TIdentity">Type of object used to identity the domain object desired.</typeparam> /// <param name="selectionFactory">Factory object that can turn /// the identity object into the appropriate DbCommand.</param> /// <param name="domainObjectFactory">Factory object that can turn the /// returned result set into a domain object.</param> /// <param name="identity">Object that identifies which item to get.</param> /// <returns>The domain object requested, or null if not found.</returns> public TDomainObject FindOne <TIdentity>( ISelectionFactory <TIdentity> selectionFactory, IDomainObjectFactory <TDomainObject> domainObjectFactory, TIdentity identity) { TDomainObject result = default(TDomainObject); using (DbCommand command = selectionFactory.ConstructSelectCommand(db, identity)) { using (IDataReader rdr = db.ExecuteReader(command)) { if (rdr.Read()) { result = domainObjectFactory.Construct(rdr); } } } return(result); }
/// <summary> /// Find all objects that match the given criteria. /// </summary> /// <typeparam name="TIdentity">Type of object used to identify /// the objects to find.</typeparam> /// <param name="selectionFactory">Factory object that can turn the /// identity object into the appropriate DbCommand.</param> /// <param name="domainObjectFactory">Factory object that can turn the /// returned result set into a domain object.</param> /// <param name="identity">Object that identifies which items to get.</param> /// <returns></returns> public List <TDomainObject> Find <TIdentity>( ISelectionFactory <TIdentity> selectionFactory, IDomainObjectFactory <TDomainObject> domainObjectFactory, TIdentity identity) { List <TDomainObject> results = new List <TDomainObject>(); using (DbCommand command = selectionFactory.ConstructSelectCommand(db, identity)) { using (IDataReader rdr = db.ExecuteReader(command)) { while (rdr.Read()) { results.Add(domainObjectFactory.Construct(rdr)); } } } return(results); }