猿教程 Logo

DBSet 类

阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效:去购买

DBSet类代表一个实体集,用于创建、读取、更新和删除操作。

DbSet 表示上下文中给定类型的所有实体的集合或可从数据库中查询的给定类型的所有实体的集合。 可以使用 DbContext.Set 方法从 DbContext 中创建 DbSet 对象。

DbContext类包括DbSet如下所示:


一些重要的DBSet类的方法如下表所示:

名称描述
Add将给定实体以“已添加”状态添加到集的基础上下文中,这样一来,当调用 SaveChanges 时,会将该实体插入到数据库中。
AddRange将给定实体集合添加到基础化集的上下文中(每个实体都置于“已添加”状态),这样当调用 SaveChanges 时,会将它插入到数据库中。
AsNoTracking返回一个新查询,其中返回的实体将不会在 DbContext 中进行缓存。 (继承自 DbQuery<TResult>。)
AsStreaming已过时。 返回将流式处理结果而非缓存它的新查询。 (继承自 DbQuery<TResult>。)
Attach将给定实体附加到集的基础上下文中。 也就是说,将实体以“未更改”的状态放置到上下文中,就好像从数据库读取了该实体一样。
Create()为此集的类型创建新的实体实例。 请注意此实例不会添加或附加到此集。 如果基础上下文配置为创建代理且实体类型满足创建代理的要求,则返回的实例将是一个代理。
Create<TDerivedEntity>()为此集的类型或派生自此集类型的类型创建新的实体实例。 请注意此实例不会添加或附加到此集。 如果基础上下文配置为创建代理且实体类型满足创建代理的要求,则返回的实例将是一个代理。
Equals确定指定的 DbSet 是否等于当前 DbSet。 (重写 DbQuery<TResult>.Equals(Object)。)
Finalize(继承自 Object。)
Find查找带给定主键值的实体。 如果上下文中存在带给定主键值的实体,则立即返回该实体,而不会向存储区发送请求。 否则,会向存储区发送查找带给定主键值的实体的请求,如果找到该实体,则将其附加到上下文并返回。如果未在上下文或存储区中找到实体,则返回 null。
FindAsync(Object[])异步查找带给定主键值的实体。 如果上下文中存在带给定主键值的实体,则立即返回该实体,而不会向存储区发送请求。 否则,会向存储区发送查找带给定主键值的实体的请求,如果找到该实体,则将其附加到上下文并返回。 如果未在上下文或存储区中找到实体,则返回 null。
FindAsync(CancellationToken,Object[])异步查找带给定主键值的实体。 如果上下文中存在带给定主键值的实体,则立即返回该实体,而不会向存储区发送请求。 否则,会向存储区发送查找带给定主键值的实体的请求,如果找到该实体,则将其附加到上下文并返回。 如果未在上下文或存储区中找到实体,则返回 null。
GetHashCode返回此 DbSet 的哈希函数。 (重写 DbQuery<TResult>.GetHashCode()。)
GetType返回当前 DbSet 的类型。
Include指定要包括在查询结果中的相关对象。 (继承自 DbQuery<TResult>。)
MemberwiseClone(继承自 Object。)
Remove将给定实体标记为“已删除”,这样一来,当调用 SaveChanges 时,将从数据库中删除该实体。 请注意,在调用此方法之前,该实体必须以另一种状态存在于该上下文中。
RemoveRange从基础化集的上下文中删除给定实体集合(每个实体都置于“已删除”状态),这样当调用 SaveChanges 时,会从数据库中删除它。
SqlQuery创建一个原始 SQL 查询,该查询将返回此集中的实体。 默认情况下,上下文会跟踪返回的实体;可通过对返回的 DbSqlQuery<TEntity> 调用 AsNoTracking 来更改此设置。 请注意返回实体的类型始终是此集的类型,而不会是派生的类型。 如果查询的一个或多个表可能包含其他实体类型的数据,则必须编写适当的 SQL 查询以确保只返回适当类型的实体。 与接受 SQL 的任何 API 一样,对任何用户输入进行参数化以便避免 SQL 注入攻击是十分重要的。 您可以在 SQL 查询字符串中包含参数占位符,然后将参数值作为附加参数提供。 您提供的任何参数值都将自动转换为 DbParameter。 context.Blogs.SqlQuery("SELECT * FROM dbo.Posts WHERE Author = @p0", userSuppliedAuthor); 或者,您还可以构造一个 DbParameter 并将它提供给 SqlQuery。 这允许您在 SQL 查询字符串中使用命名参数。 context.Blogs.SqlQuery("SELECT * FROM dbo.Posts WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor));
ToString返回基础查询的 String 表示形式。 (继承自 DbQuery<TResult>。)

访问MSND 查看 DBSet类的更多信息


阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效: 去购买


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/entity/dbset-class.html