2013-09-05 2 views
0

Я новичок в entityspaces и пытается преобразовать мой SQL запрос в формат entityspacesпреобразования синтаксиса SQL в entityspaces синтаксис

У меня есть 3 таблицы

Course 
Lesson 
Attemps 

Я также имеют вид «v_Course» и я используя этот вид в запросе

Ниже мой SQL-запрос:

Select c.*, 
    sub.res 
FROM (
    SELECT l.[CourseID], 
    Count(l.CourseID) as res 
    FROM [Lesson] l 
     INNER JOIN [Attempt] a 
     ON (l.[LessonID] = a.[LessonID] 
     AND l.[CourseID] IN (SELECT DISTINCT c.[CourseID] 
          FROM [Course] c 
         )) group by l.CourseID 
) AS sub INNER JOIN v_Course c ON c.CourseID=sub.CourseID order by res desc 

Этот запрос возвращает мне желаемые результаты успешно в SQL Query Browser

Теперь я хочу, чтобы преобразовать этот синтаксис объектных пространств и ниже код

//Query for the join 

AttemptQuery aq = new AttemptQuery("a"); 

//SubQuery of course id 
CourseQuery cq = new CourseQuery("c"); 
cq.es.Distinct = true; 
cq.Select(cq.CourseID); 

LessonQuery lq = new LessonQuery("l"); 
lq.Select(lq.CourseID, lq.CourseID.Count().As("res")); 
lq.InnerJoin(aq).On(lq.LessonID == aq.LessonID & lq.CourseID.In(cq)); 

lq.GroupBy(lq.CourseID); 
lq.Load(); 

VCourseCollection vCourseColl = new VCourseCollection(); 
vCourseColl.Query.SelectAllExcept(vCourseColl.Query.CourseWriterName); 
    vCourseColl.Query.Where(vCourseColl.Query.CourseIsDeleted.Equal(false),vCourseColl.Query.CourseIsActive.Equal(true), vCourseColl.Query.ActiveLessonCount.GreaterThan(0), vCourseColl.Query.CourseCategoryID.NotEqual(7)); 
vCourseColl.Query.OrderBy(vCourseColl.Query.CourseName.Ascending); 
vCourseColl.Query.From(lq).As("sub"); 
vCourseColl.Query.InnerJoin(lq).On(vCourseColl.Query.CourseID==lq.CourseID); 
vCourseColl.Query.Load(); 

Но когда я запускаю эту страницу я получаю этот вид ошибки

SqlException was unhandled by the user code 

Ambiguous column name 'CourseID'. 

Invalid column name 'CourseCategoryID'. 

Ambiguous column name 'CourseID'. 

Invalid column name 'CourseName'. 

Invalid column name 'CourseDescription'. 

Invalid column name 'CourseIsDeleted'. 

Invalid column name 'CourseImageID'. 

Invalid column name 'CourseKeyWords'. 

Invalid column name 'CourseIsActive'. 

Invalid column name 'OutstandingIssues'. 

Invalid column name 'CourseWriterEmployeeID'. 

Invalid column name 'CourseAnimatorEmployeeID'. 

Invalid column name 'CourseAnimatorName'. 

Invalid column name 'TrainingTime'. 

Invalid column name 'CourseCategoryName'. 

Invalid column name 'SafetyImageID'. 

Invalid column name 'FeedbackRatingAverage'. 

Invalid column name 'CourseCategorySortOrder'. 

Invalid column name 'TotalLessonCount'. 

Invalid column name 'TotalLessonsInProduction'. 

Invalid column name 'ActiveLessonCount'. 

Invalid column name 'TrainingQuestionsTime'. 

Invalid column name 'TrainingLessonsTime'. 

Уверен, что я пишу код worng в пространствах объектов.

Любой здесь, чтобы помочь мне, пожалуйста ...................

Благодаря

(Примечание: я задал тот же вопрос ранее, но с бедный отформатированный код так спрашивать снова с чистым кодом)

+0

Никто не может помочь мне ................. –

ответ

0

См http://brewdawg.github.io/Tiraggo.EF/ (он имеет тот же синтаксис)

А также

http://www.entityspaces.net/www.entityspaces.net/blog/2011/11/02/EntitySpaces%20Dynamic%20Query%20Showcase%20Repost.aspx.html

Одна ошибка, которую вы делаете, вызывает lq.Load(), вы никогда не загружаете напрямую через запрос, также не используйте встроенный запрос в своей коллекции, используйте объект запроса, это в конце вызова Load (yourQuery) в вашей коллекции, если вы не получите его обратно, и я помогу вам написать запрос, но посмотрите на те образцы, которые я разместил.

Смежные вопросы