SQL 到多对多关系的 linq (C# ASP.net MVC)
SQL to linq for Many to Many Relation (C# ASP.net MVC)
我正在寻求一些帮助,以便能够从 SQL 查询中转录一些 LINQ :
快速浏览一下我的数据库:
Entity framework 像这样“简化”我的“学生”模型:
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<etuResult> etuResult { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<cours> cours { get; set; }
我能够找到我的“课程”的“libellé”,其中 SQL 中的“etudiant_id”== 1,如下所示:
select c.libelle
from cours c
where c.cours_id in (
select ec.cours_id
from etuCours ec
where ec.etudiant_id in (
select e.etudiant_id
from etudiant e
))
但我没有找到如何使用 linq 进行查询(我使用 LinqPad 4 进行测试)
提前感谢您的帮助
为什么不直接在实体上调用集合?如果已映射,则过滤会自动发生。无需创建另一个查询。
var courses = myEtudiantInstance.cours;
如果你想要 libelle
那么
var libelles = myEtudiantInstance.cours.Select(c => c.libelle);
这需要启用延迟加载或在获取集合中的 Etudiant
实例时使用 Include
。
var libelles = dbContextInstance.Etudiants
.Include(e => e.cours)
.Single(e => e.EtudiantId == 1) // will throw exception if entity not found
.cours.Select(c => c.libelle); // get all libelle's
编辑:如果这对某人有用:
使用 DAL 文件夹(用于数据访问层)更简单,如 following 教程(在副标题 "Create the Database Context" 下)所示。
如果你不明白这个文件夹的用途,我建议你 this link.
如果我改进了 MVC 并按照本教程进行操作,我的 Linq 查询就不会遇到麻烦
我正在寻求一些帮助,以便能够从 SQL 查询中转录一些 LINQ :
快速浏览一下我的数据库:
Entity framework 像这样“简化”我的“学生”模型:
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<etuResult> etuResult { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<cours> cours { get; set; }
我能够找到我的“课程”的“libellé”,其中 SQL 中的“etudiant_id”== 1,如下所示:
select c.libelle
from cours c
where c.cours_id in (
select ec.cours_id
from etuCours ec
where ec.etudiant_id in (
select e.etudiant_id
from etudiant e
))
但我没有找到如何使用 linq 进行查询(我使用 LinqPad 4 进行测试)
提前感谢您的帮助
为什么不直接在实体上调用集合?如果已映射,则过滤会自动发生。无需创建另一个查询。
var courses = myEtudiantInstance.cours;
如果你想要 libelle
那么
var libelles = myEtudiantInstance.cours.Select(c => c.libelle);
这需要启用延迟加载或在获取集合中的 Etudiant
实例时使用 Include
。
var libelles = dbContextInstance.Etudiants
.Include(e => e.cours)
.Single(e => e.EtudiantId == 1) // will throw exception if entity not found
.cours.Select(c => c.libelle); // get all libelle's
编辑:如果这对某人有用:
使用 DAL 文件夹(用于数据访问层)更简单,如 following 教程(在副标题 "Create the Database Context" 下)所示。
如果你不明白这个文件夹的用途,我建议你 this link.
如果我改进了 MVC 并按照本教程进行操作,我的 Linq 查询就不会遇到麻烦