public void CreateCollectionViewModel()
        {
            Func <IRepositoryQuery <TEntity>, IQueryable <TProjection> > projection = null;

            if (constructProjectionCallBackFunc != null)
            {
                projection = constructProjectionCallBackFunc();
            }

            this.collectionViewModel = CollectionViewModel <TEntity, TProjection, TPrimaryKey, TUnitOfWork> .CreateCollectionViewModel(this.unitOfWorkFactory, this.getRepositoryFunc, projection);

            this.collectionViewModel.OnEntitiesLoadedCallBack  = OnEntitiesFirstLoaded;
            this.collectionViewModel.OnEntitiesChangedCallBack = collectionViewModelChangedCallBack;
            this.collectionViewModel.Entities.ToList();
        }