OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.ApplyConfiguration(new BookConfig()); modelBuilder.ApplyConfiguration(new BookAuthorConfig()); modelBuilder.HasDbFunction(() => UdfDefinitions.AverageVotesUdf(default(Guid))); modelBuilder.HasDbFunction(() => UdfDefinitions.AuthorsStringUdf(default(Guid))); }
public static IQueryable <BookListDto> MapBookToDto(this IQueryable <Book> books) { return(books.Select(p => new BookListDto { BookId = p.BookId, Title = p.Title, PublishedOn = p.PublishedOn, ActualPrice = p.ActualPrice, OrgPrice = p.OrgPrice, PromotionalText = p.PromotionalText, AuthorsOrdered = UdfDefinitions.AuthorsStringUdf(p.BookId), ReviewsCount = p.Reviews.Count(), ReviewsAverageVotes = UdfDefinitions.AverageVotesUdf(p.BookId) })); }
public void TestAuthorsStringDbFunctionOk() { //SETUP var options = this.CreateUniqueClassOptionsWithLogging <SqlDbContext>( log => _output.WriteLine(log.Message)); using (var context = new SqlDbContext(options)) { //ATTEMPT var aveReviews = context.Books .Select(p => UdfDefinitions.AuthorsStringUdf(p.BookId)) .ToList(); //VERIFY aveReviews.First().ShouldEqual("Author1, Author2"); } }
MapBookUdfsToDto(this IQueryable <Book> books) //#A { return(books.Select(p => new UdfsBookListDto { BookId = p.BookId, Title = p.Title, PublishedOn = p.PublishedOn, EstimatedDate = p.EstimatedDate, OrgPrice = p.OrgPrice, ActualPrice = p.ActualPrice, PromotionText = p.PromotionalText, AuthorsOrdered = UdfDefinitions //#B .AuthorsStringUdf(p.BookId), //#B TagsString = UdfDefinitions //#B .TagsStringUdf(p.BookId), //#B ReviewsCount = p.Reviews.Count(), ReviewsAverageVotes = p.Reviews.Select(y => (double?)y.NumStars).Average(), ManningBookUrl = p.ManningBookUrl })); }