当我获得EF的表记录时,如
db.cities.Tolist();
返回City
表和相关表记录的所有记录,但我希望获取城市表记录 。
这可能吗?
答案 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();
假设城市表引用了建筑物表。