gpt4 book ai didi

c# - EF LINQ - 如何查询由外键关联的 2 个表?

转载 作者:行者123 更新时间:2023-11-30 21:49:17 25 4
gpt4 key购买 nike

首先使用 EF 6 代码。我有一个 Entity 类和一个 Name 类,我想查询所有 Entity 对象及其各自名称的列表,以便我可以在 Gridview 控件上显示。

这些是我的类定义:

public class Entity
{
[Key]
public int EntityKey { get; set; }

public virtual ICollection<Name> Names { get; set; }
}

public class Name
{
[Key]
public int NameKey { get; set; }
public int EntityKey { get; set; }

public string FirstName { get; set; }
public string LastName { get; set; }

public virtual Entity Entity { get; set; }
}

在我的数据访问层中,我有一个从数据库中获取所有实体的方法:

public List<Entity> GetEntities()
{
SdmDBContext entityDbContext = new SdmDBContext();
return entityDbContext.Entities.ToList();
}

但是对于这个查询,我没有得到与实体类关联的名称。我已经尝试过 LINQ 和 lambda 表达式,以及 .Include 操作,但不确定如何正确地制定语法。

如何更改 DAL 方法以返回与所有现有实体关联的名称?

最佳答案

您的代码正在加载实体表中的实体列表,并且通过“延迟加载”,它还应该在您访问它们时返回关联的 Name 集合。您将 ICollection 声明为虚拟的以启用“延迟加载”,因为当您访问尚未急切加载的内容时,将创建一个代理对象来发出数据库请求。

Include 只是通过使用对象上定义的导航属性急切加载相关实体的请求。您可以调用 Include,使用 lambda 或字符串表示您想要预先加载的导航属性的名称。

例如:

public List<Entity> GetEntities()
{
SdmDBContext entityDbContext = new SdmDBContext();
return entityDbContext.Entities.Include("Names").ToList();
}

关于c# - EF LINQ - 如何查询由外键关联的 2 个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37102448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com