/// <summary>
        /// Retrieves the first/only entity that has a reference matching the provided parameters.
        /// </summary>
        /// <param name="propertyName">The name of the property to query for.</param>
        /// <param name="referencedEntityType">The type of entity being referenced.</param>
        /// <param name="referencedEntityID">The ID of the referenced entity to match.</param>
        /// <returns>An array of the objects retrieved.</returns>
        public override T GetEntityWithReference <T>(string propertyName, Type referencedEntityType, Guid referencedEntityID)
        {
            IDataIndexer indexer = Provider.InitializeDataIndexer();

            indexer.AutoRelease = AutoRelease;
            indexer.DataStore   = DataStore;

            T[] entities = indexer.GetEntitiesWithReference <T>(propertyName, referencedEntityType, referencedEntityID);

            if (entities.Length == 0)
            {
                return(default(T));
            }
            else
            {
                return(entities[0]);
            }
        }