private object GetRandomEntity <T>(Expression <Func <T, bool> > predicate) where T : BaseEntity, new() { var dbSet = _services.DbContext.Set <T>(); var query = dbSet.Where(predicate); // Determine how many entities match the given predicate var count = query.Count(); object result; if (count > 0) { // Fetch a random one var skip = CommonHelper.GenerateRandomInteger(0, count); result = query.OrderBy(x => x.Id).Skip(() => skip).FirstOrDefault(); } else { // No entity macthes the predicate. Provide a fallback test entity var entity = Activator.CreateInstance <T>(); result = _templateEngine.CreateTestModelFor(entity, entity.GetUnproxiedType().Name); } return(result); }
private object GetRandomEntity <T>(Expression <Func <T, bool> > predicate) where T : BaseEntity, new() { var dbSet = _services.DbContext.Set <T>(); var query = dbSet.Where(predicate); // Determine how many entities match the given predicate. var count = query.Count(); object result; if (count > 0) { // Fetch a random one. var skip = CommonHelper.GenerateRandomInteger(0, count); result = query.OrderBy(x => x.Id).Skip(() => skip).FirstOrDefault(); } else { // No entity matches the predicate. Provide a fallback test entity. var entity = Activator.CreateInstance <T>(); if (entity is NewsLetterSubscription subscription) { // Campaign preview requires NewsLetterSubscription entity. subscription.NewsLetterSubscriptionGuid = Guid.NewGuid(); subscription.Email = "*****@*****.**"; subscription.Active = true; subscription.CreatedOnUtc = DateTime.UtcNow; subscription.WorkingLanguageId = _services.WorkContext.WorkingLanguage.Id; result = entity; } else { result = _templateEngine.CreateTestModelFor(entity, entity.GetUnproxiedType().Name); } } return(result); }