繁体   English   中英

实体框架核心获取没有相关实体的实体

[英]Entity Framework Core get entity without related entities

我一直在对此进行搜索,但是到目前为止,还没有找到一个合适的解决方案。 我正在尝试从数据库中获取一个没有附加相关实体的实体。

该函数如下return context.Entity.SingleOrDefault(n => n.Name == name) ,其中context is a DbContext

到目前为止,答复仅包含一个实体,但添加了50个我不需要的“子”实体。

从数据库获取单个实体的最佳方法是什么?

使用EFC2.1 pre release build

编辑:

还发现,如果使用DbContext.Entity.AsNoTracking ,则可以获取没有DbContext.Entity.AsNoTracking的实体。

不确定在进行更改并调用DbContext.saveChanges()之后是否将保存完整实体

您必须启用延迟加载,只需将属性添加到类中即可。

public virtual ICollection<ChildType> NavigationProperty;

这是用于加载相关数据的非常有用的文档。

我最近发现,您也可以DbContext.Entity.AsNoTracking()使用DbContext.Entity.AsNoTracking()

在获取实体时使用linq查询将导致linq中包含的所有相关实体也将被获取。

假设您有a Teacher, a Student and a Classroom entity 一位老师可以有多个学生和教室。 您想找到教室A的所有老师和所有男学生,所以您会这样做

DbContext.Teachers.Where(x => x.Classroom.Name = "A" && x.Student.Gender = "Male")

自从您在linq表达式中调用它们之后,这将获取所有基础ClassroomsStudentsTeacher entities 由于只需要教师实体,因此应使用以下内容:

DbContext.Teachers.AsNoTracking().Where(x => x.Classroom.Name = "A" && x.Student.Gender = "Male")

使用AsNoTracking()您可以声明不想要基础数据,而只需要它来过滤想要的实体。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM