LINQの複数のDataContextクエリの問題の解決
1829 ワード
先に死んだ脳細胞を祭る!長い間Nをデバッグしたが、良い案が見つからなかった.
設計当初は想定していませんでしたが、LINQ文で複数のDataContextを使用すると問題が発生します.
问题はそんなに大きくなくて、SQLの文に交换してすぐに(私は头が痛いので、LINQを使ってすべてLINQを使うことを统一して、断固としてその中のいくつかをSQLに交换しません..)
よし、くだらないことは言わないで、何人かの人を助けてほしい.
まず、LINQはLINQ TO SQLだけでなく、配列をクエリーすることもできます.
これにより、固定条件を先に照会してリストを得ることができ、この固定条件に基づいて照会するリストを得ることができる.
その後、後者のListと前者のListを連立してクエリを行い、複数のDataContextのエラーが発生しないようにします.
このような効率はもちろん低く、慎重に使います.
次に例を挙げて説明する.
例えば先生が授業を教えると、先生の表には教授の授業フィールドがあり、複数の教授の授業が含まれていて、スペースで区切られています.
カリキュラムの表には、すべての教授カリキュラムとカリキュラム分類()が含まれています.
Teacherフィールド:Name Courses
データ:張三高等数学
李四オペレーティングシステムデータ構造
王五線形代数
Courseフィールド:Category CourseName
大学1年生の課程の高等数学
大きい課程の線形代数
大きい2課程のオペレーティングシステム
大きい2課程のデータ構造
2つのDataContextが既に使用されている場合、1つ目はTeacher、2つ目はCourseで、
今、大学1年生の授業を教えているすべての先生を調べたいです.
コンテキストオブジェクトを先に構築します.
大きい1課程はどれらがあって、Listオブジェクトを得ます
その後、IQueryableの後続操作(重複削除など)が必要な場合は、IQueryableに変換することもできます
ここではただ一つの解決策を提案しただけで、使うかどうか、どのように使うかは自分で考えなければなりません.
設計当初は想定していませんでしたが、LINQ文で複数のDataContextを使用すると問題が発生します.
问题はそんなに大きくなくて、SQLの文に交换してすぐに(私は头が痛いので、LINQを使ってすべてLINQを使うことを统一して、断固としてその中のいくつかをSQLに交换しません..)
よし、くだらないことは言わないで、何人かの人を助けてほしい.
まず、LINQはLINQ TO SQLだけでなく、配列をクエリーすることもできます.
これにより、固定条件を先に照会してリストを得ることができ、この固定条件に基づいて照会するリストを得ることができる.
その後、後者のListと前者のListを連立してクエリを行い、複数のDataContextのエラーが発生しないようにします.
このような効率はもちろん低く、慎重に使います.
次に例を挙げて説明する.
例えば先生が授業を教えると、先生の表には教授の授業フィールドがあり、複数の教授の授業が含まれていて、スペースで区切られています.
カリキュラムの表には、すべての教授カリキュラムとカリキュラム分類()が含まれています.
Teacherフィールド:Name Courses
データ:張三高等数学
李四オペレーティングシステムデータ構造
王五線形代数
Courseフィールド:Category CourseName
大学1年生の課程の高等数学
大きい課程の線形代数
大きい2課程のオペレーティングシステム
大きい2課程のデータ構造
2つのDataContextが既に使用されている場合、1つ目はTeacher、2つ目はCourseで、
今、大学1年生の授業を教えているすべての先生を調べたいです.
コンテキストオブジェクトを先に構築します.
TeacherDataContext t = new TeacherDataContext ();
CourseDataContext c = new CourseDataContext ();
大きい1課程はどれらがあって、Listオブジェクトを得ます
List<String> courses = c.Course.Where(c => c.Category== " ").Select(c => c.CourseName).ToList();
先生のリストを入手List<Teacher> teachers = t.Teacher.toList<Teacher>();
2つのListクエリを使用 IEnumerable<Teacher> temp = from ts in teachers
from c in courses
where ts.Courses.Contains(c)
select ts;
その後、IQueryableの後続操作(重複削除など)が必要な場合は、IQueryableに変換することもできます
IQueryable<Teacher> Iteachers= a.AsQueryable<Teacher>().Distinct<Teacher>();
ここではただ一つの解決策を提案しただけで、使うかどうか、どのように使うかは自分で考えなければなりません.