private TEntity CreateEntityFromValues <TEntity>(IDictionary <string, object> values) { var tableInfo = metaDataStore.GetTableInfoFor <TEntity>(); var cachedEntity = sessionLevelCache.TryToFind(typeof(TEntity), values[tableInfo.PrimaryKey.Name]); if (cachedEntity != null) { return((TEntity)cachedEntity); } var entity = Activator.CreateInstance <TEntity>(); Hydrate(tableInfo, entity, values); sessionLevelCache.Store(typeof(TEntity), values[tableInfo.PrimaryKey.Name], entity); return(entity); }