Entity Framework中的DbSet
DbSet类表示可用于创建、读取、更新和删除操作的实体集。
上下文类(派生自DbContext)必须包含映射到数据库表和视图的实体的DbSet类型属性。
DbSet类的重要方法如下表所示:
方法 | 返回类型 | 描述 |
---|---|---|
Add | 新增实体类型 | 将给定实体添加到具有Added状态的上下文中。保存更改时,将处于Added状态的实体插入到数据库中。保存更改后,对象状态变为Unchanged。Example:dbcontext.Students.Add(studentEntity) |
AsNoTracking<Entity> | DBQuery<Entity> | 返回一个新的查询,其中返回的实体不会缓存在DbContext中(继承自DbQuery)。作为AsNoTracking返回的实体将不会被DBContext跟踪。这将极大地提高只读实体的性能。 Example:var studentList = dbcontext.Students.AsNoTracking<Student>().ToList<Student>(); |
Attach(Entity) | 作为参数传递的实体 | 将给定实体附加到处于Unchanged状态的上下文。Example:dbcontext.Students.Attach(studentEntity); |
Create | Entity | 为该集合的类型创建一个实体的新实例。此实例not added或attached 到集合。如果底层上下文被配置为创建代理,并且实体类型满足创建代理的要求,则返回的实例将是一个代理。Example:var newStudentEntity = dbcontext.Students.Create(); |
Find(int) | 实体类型 | 使用主键值查找由上下文跟踪的实体。如果实体不在上下文中,那么将执行查询,并根据数据源中的数据进行评估,如果在上下文中或数据源中没有找到实体,则返回null。注意,Find还返回已添加到上下文但尚未保存到数据库的实体。Example:Student studEntity = dbcontext.Students.Find(1); |
Include | DBQuery | 指定要包含在查询结果中的相关对象(继承自DbQuery)。Example:var studentList = dbcontext.Students.Include(“StudentAddress”).ToList<Student>();var studentList = dbcontext.Students.Include(s => s.StudentAddress).ToList<Student>(); |
Remove | 删除的实体 | 将给定实体标记为Deleted。保存更改时,将从数据库中删除实体。在调用此方法之前,实体必须以某种其他状态存在于上下文中。Example:dbcontext.Students.Remove(studentEntity); |
SqlQuery | DBSqlQuery | 创建一个原始SQL查询,该查询将返回实体的集合。默认情况下,返回的实体由上下文跟踪;这可以通过调用该方法返回的DbSqlQuery的AsNoTracking来改变。Example:var studentEntity = dbcontext.Students.SqlQuery(“select * from student where studentid = 1”).FirstOrDefault<Student>(); |
有关DbSet的更多信息请访问MSND(https://msdn.microsoft.com/enus/library/system.data.entity.dbset(v=vs.113).aspx)。
参考
https://www.entityframeworktutorial.net/
https://msdn.microsoft.com/