public void TestEnrollmentQuery() { var entityTypeResolver = new StaticEntityTypeResolver(); var entityTypeRepository = new DSEntityTypeRepository(new MemoryCache(), entityTypeResolver); var search = new DSSearch(DSEnrollment.EntityName); search.AddSelect(DSEnrollment.Attrs.EnrollmentID); search.AddSelect(DSEnrollment.Attrs.Student.LastName); search.AddSelect(DSEnrollment.Attrs.Student.ID); search.AddSelect(DSEnrollment.Attrs.Course.Title); search.AddSelect(DSEnrollment.Attrs.Course.Department.Name); search.AddSelect(DSEnrollment.Attrs.Grade); search.Where.DSContains(DSEnrollment.Attrs.Course.Title, "e"); search.AddOrder(DSEnrollment.Attrs.Student.LastName); search.Page = 1; search.PageSize = 25; var queryBuilder = DSSearchTestHelpers.CreateSearchBuilder(entityTypeRepository, search, true); var expectedQuery = "SELECT e.EnrollmentID, p.LastName [Student.LastName], p.ID [Student.ID], c.Title [Course.Title], d.Name [Course.Department.Name], e.Grade" + " FROM dbo.Enrollment e WITH(NOLOCK)" + " JOIN dbo.Person p WITH(NOLOCK) ON e.StudentID = p.ID" + " JOIN dbo.Course c WITH(NOLOCK) ON e.CourseID = c.CourseID" + " JOIN dbo.Department d WITH(NOLOCK) ON c.DepartmentID = d.DepartmentID" + " WHERE c.Title LIKE '%'+@p0+'%'"; Assert.AreEqual(DSSearchTestHelpers.AddDefaultQueryOrder(expectedQuery, "p.LastName, e.EnrollmentID"), queryBuilder.ToString()); }
/// <summary> /// Initializes static members of the <see cref="SearchController"/> class. /// </summary> static SearchController() { // TODO - Ultimately all of this should be handled by Unity (or some other IoC Container implementation). _cache = new MemoryCache(); var entityTypeResolver = new StaticEntityTypeResolver(); var entityTypeRepository = new DSEntityTypeRepository(_cache, entityTypeResolver); var processor = new DSSQLSearchProcessor(_cache, entityTypeRepository); _dataAccess = new DataAccessController(_cache, entityTypeRepository, processor); }