使用相关表格检索表格的记录'实体框架的记录?

时间:2017-12-04 05:43:30

标签: linq entity-framework-6

当我获得EF的表记录时,如

db.cities.Tolist();

返回City表和相关表记录的所有记录,但我希望获取城市表记录

这可能吗?

2 个答案:

答案 0 :(得分:1)

是的,您可以使用EF的延迟加载功能,如下所示。在任何ToList()调用之前添加此行

db.Configuration.LazyLoadingEnabled = false;

您也可以通过在DBContext构造函数中设置属性来全局配置此行为,如下所示。

public partial class SchoolDBEntities : DbContext
{
    public SchoolDBEntities(): base("name=SchoolDBEntities")
    {
        this.Configuration.LazyLoadingEnabled = false;
    }    

}

答案 1 :(得分:1)

实体框架支持3种加载相关数据的方法 - 急切加载,延迟加载和显式加载。

在您的情况下,您可以选择延迟加载或显式加载。

延迟加载默认情况下处于启用状态,因此在您访问相关媒体资源之前,它的数据不会从数据库中获取。

显式加载,首先需要禁用延迟加载:

public class DatabaseContext : DbContext 
{ 
    public DatabaseContext() 
    { 
        this.Configuration.LazyLoadingEnabled = false; 
    } 
}

然后,您可以使用Load()加载相关实体。

var city = context.cities.FirstOrDefault();
context.Entry(city).Reference(p => p.Buildings).Load(); 

假设城市表引用了建筑物表。