我有三个模型如下,
public class Team
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Document
{
public int Id { get; set; }
public string Name { get; set; }
public string Type { get; set; }
public string Application { get; set; }
public ICollection<DocumentResponsible> DocumentResponsibles { get; set; }
public string Pcda { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime UpdatedAt { get; set; }
}
public class DocumentResponsible
{
public int Id { get; set; }
public int DocumentId { get; set; }
public int TeamId { get; set; }
}
我想编写一个实体框架表达式来连接三个表,并在每个文档的一行中选择文档表和团队名称的所有字段。所以基本上我想加入三个表使用group_concat作为团队名称。然后我想将它绑定到web形式的gridview。
我尝试了什么,
(from dc in DBContext.Document
join dr in DBContext.DocumentResponsible on dc.Id equals dr.DocumentId
join t in DBContext.Team on dr.TeamId equals t.Id
select new
{
Name = dc.Name,
Type = dc.Type,
Application = dc.Application,
Pcda = dc.Pcda,
}).ToList();
我刚尝试过,
var data = DBContext.Dcoument.Include("DocumentResponsibles").Tolist();
答案 0 :(得分:0)
没有你的DbContext和实体映射很难提供帮助,但我会说你可能只想将Document.DocumentResponsibles
标记为虚拟。
此外,在DocumentResponsible
中,您可能希望为Document
添加一个属性,为Team
添加一个属性(两者都标记为虚拟),这样您就不必在您想要处理数据的任何时候都要使用连接键,只要正确配置,EF就会为您完成。
如果它不起作用,您可以在问题中添加以下信息:首先,上下文类和您拥有的映射。其次,如果你var firstDocument = yoneylemDB.Document.First()
firstDocument
,~/.bash_profile
怎么样?它是否填写了所有的字段和属性?有什么奇怪的吗?