私は何かを混乱させる。私はORMが何をしているのか理解しており、EFが何であるか理解しています。私がぼんやりしているのは、データを取得するために特殊な構造を使用したくない部分です。私はSQLを使いたい。 SQLで複雑なクエリを作成し、サブクエリなどをたくさん作成すると、プロパティのようなデータを処理できるようにするには、そのクエリに対して特別なカスタムクラスを作成する必要があります。Entity Frameworkで生のSQLクエリにカスタムクラスが必要ですか?
私はこのようなシナリオを考えています。誰かが情報を必要とします。 5つの異なる表から20列を戻す複雑な照会が必要です。これらの列を持つクラスを作成してからクエリを作成する必要があります。これは正しいです?
私は、これはMoodleのか、他のLMSや学生情報システムのようなものは何だった場合
using System;
using System.Collections.Generic;
namespace ContosoUniversity.Models
{
public class Student
{
public int ID { get; set; }
public string LastName { get; set; }
public string FirstMidName { get; set; }
public DateTime EnrollmentDate { get; set; }
public virtual ICollection<Enrollment> Enrollments { get; set; }
}
}
、このチュートリアルで探していますか?複雑になり、いくつかのテーブルより多くの結合とデータが必要になります。
が、これは、多くの重複することになります。たとえば
public virtual ICollection<Enrollment> Enrollments { get; set; }
public virtual ICollection<Schedule> Schedules{ get; set; }
public virtual ICollection<SubjectContext> SubjectContexts{ get; set; }
public virtual ICollection<Grade> Grades{ get; set; }
public virtual ICollection<Instructor> Instructors{ get; set; }
を、このクエリを考えてみます。
SELECT user.firstname, user.lastname, user.email, user.country, cc.name AS 'course category name', c.fullname, q.name, question.content AS 'Question', choice.content AS 'Question option', choicerank.rank AS 'Choice value'
FROM mdl_course_categories AS cc
INNER JOIN mdl_course AS c ON c.category = cc.id
INNER JOIN mdl_questionnaire AS q ON q.course = c.id
INNER JOIN mdl_questionnaire_question AS question ON question.survey_id = q.id
INNER JOIN mdl_questionnaire_quest_choice AS choice ON choice.question_id = question.id
INNER JOIN mdl_questionnaire_response_rank AS choicerank ON choicerank.choice_id = choice.id
JOIN mdl_context AS ctx ON c.id = ctx.instanceid
JOIN mdl_role_assignments AS ra ON ra.contextid = ctx.id
JOIN mdl_user AS user ON user.id = ra.userid
ORDER BY user.firstname
これは、カスタムクラスを必要としていますか?
もし私が.toList(String)
を持っているものをやっているのであれば、フレームワークを使い始める目的を破るのでしょうか?
Raw SQLまたはLINQクエリでは、クエリ結果を表すクラスが必要です。 –
だから私は理解しています。お願いします。私は、おそらく、SQL自体に加えて、多くの部品を構築する必要がありますか?言い換えれば、私はORMから恩恵を受けるかどうかを調べるために、どれだけ多くのクエリを調べ、複雑さなどを判断する必要があります。 – johnny