DbSet 类
[本页针对的是实体框架版本 6。最新版本以“实体框架”NuGet 包的形式提供。有关实体框架的更多信息,请参见 msdn.com/data/ef。]
非泛型版本的 DbSet<TEntity>,可在生成时不知道实体类型时使用。
继承层次结构
System.Object
System.Data.Entity.Infrastructure.DbQuery
System.Data.Entity.DbSet
命名空间: System.Data.Entity
程序集: EntityFramework(在 EntityFramework.dll 中)
语法
声明
<SuppressMessageAttribute("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix", Justification := "Name is intentional")> _
<SuppressMessageAttribute("Microsoft.Design", "CA1010:CollectionsShouldImplementGenericInterface")> _
Public MustInherit Class DbSet _
Inherits DbQuery
用法
Dim instance As DbSet
[SuppressMessageAttribute("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix", Justification = "Name is intentional")]
[SuppressMessageAttribute("Microsoft.Design", "CA1010:CollectionsShouldImplementGenericInterface")]
public abstract class DbSet : DbQuery
[SuppressMessageAttribute(L"Microsoft.Naming", L"CA1710:IdentifiersShouldHaveCorrectSuffix", Justification = L"Name is intentional")]
[SuppressMessageAttribute(L"Microsoft.Design", L"CA1010:CollectionsShouldImplementGenericInterface")]
public ref class DbSet abstract : public DbQuery
[<AbstractClassAttribute>]
[<SuppressMessageAttribute("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix", Justification = "Name is intentional")>]
[<SuppressMessageAttribute("Microsoft.Design", "CA1010:CollectionsShouldImplementGenericInterface")>]
type DbSet =
class
inherit DbQuery
end
public abstract class DbSet extends DbQuery
DbSet 类型公开以下成员。
构造函数
名称 | 描述 | |
---|---|---|
DbSet | 从派生类型的构造函数中进行调用时,创建一个 DbSet 实例,它将用作 DbSet 的测试替身。将由测试替身使用的方法和属性必须由测试替身来实现,除了 AsNoTracking、AsStreaming 和 Include,它们的默认实现是空操作。 |
顶部
属性
名称 | 描述 | |
---|---|---|
ElementType | IQueryable 元素类型。 (继承自 DbQuery。) | |
Local | 获取 ObservableCollection<T>,它表示此集中的所有“已添加”、“未更改”和“已修改”实体的本地视图。在上下文中添加或删除实体时,该本地视图将保持同步。同样,在本地视图中添加或删除实体也会自动在上下文中添加或删除实体。 |
顶部
方法
名称 | 描述 | |
---|---|---|
Add | 将给定实体以“已添加”状态添加到集的基础上下文中,这样一来,当调用 SaveChanges 时,会将该实体插入到数据库中。 | |
AddRange | 将给定实体集合添加到基础化集的上下文中(每个实体都置于“已添加”状态),这样当调用 SaveChanges 时,会将它插入到数据库中。 | |
AsNoTracking | 返回一个新查询,其中返回的实体将不会在 DbContext 中进行缓存。 (继承自 DbQuery。) | |
AsStreaming | 已过时。 返回将流式处理结果而非缓存它的新查询。 (继承自 DbQuery。) | |
Attach | 将给定实体附加到集的基础上下文中。也就是说,将实体以“未更改”的状态放置到上下文中,就好像从数据库读取了该实体一样。 | |
Cast<TEntity> | 返回等效泛型 DbSet<TEntity> 对象。 | |
Create() | 为此集的类型创建新的实体实例。请注意此实例不会添加或附加到此集。如果基础上下文配置为创建代理且实体类型满足创建代理的要求,则返回的实例将是一个代理。 | |
Create(Type) | 为此集的类型或派生自此集类型的类型创建新的实体实例。请注意此实例不会添加或附加到此集。如果基础上下文配置为创建代理且实体类型满足创建代理的要求,则返回的实例将是一个代理。 | |
Equals | 返回指定的集是否等于当前集。 (重写 DbQuery.Equals(Object)。) | |
Finalize | (继承自 Object。) | |
Find | 查找带给定主键值的实体。如果上下文中存在带给定主键值的实体,则立即返回该实体,而不会向存储区发送请求。否则,会向存储区发送查找带给定主键值的实体的请求,如果找到该实体,则将其附加到上下文并返回。如果未在上下文或存储区中找到实体,则返回 null。 | |
FindAsync(Object[]) | 异步查找带给定主键值的实体。如果上下文中存在带给定主键值的实体,则立即返回该实体,而不会向存储区发送请求。否则,会向存储区发送查找带给定主键值的实体的请求,如果找到该实体,则将其附加到上下文并返回。如果未在上下文或存储区中找到实体,则返回 null。 | |
FindAsync(CancellationToken, Object[]) | 异步查找带给定主键值的实体。如果上下文中存在带给定主键值的实体,则立即返回该实体,而不会向存储区发送请求。否则,会向存储区发送查找带给定主键值的实体的请求,如果找到该实体,则将其附加到上下文并返回。如果未在上下文或存储区中找到实体,则返回 null。 | |
GetHashCode | 返回指定集的哈希函数。 (重写 DbQuery.GetHashCode()。) | |
GetType | 获取当前集的类型。 | |
Include | 指定要包括在查询结果中的相关对象。 (继承自 DbQuery。) | |
MemberwiseClone | (继承自 Object。) | |
Remove | 将给定实体标记为“已删除”,这样一来,当调用 SaveChanges 时,将从数据库中删除该实体。请注意,在调用此方法之前,该实体必须以另一种状态存在于该上下文中。 | |
RemoveRange | 从基础化集的上下文中删除给定实体集合(每个实体都置于“已删除”状态),这样当调用 SaveChanges 时,会从数据库中删除它。 | |
SqlQuery | 创建一个原始 SQL 查询,该查询将返回此集中的实体。默认情况下,上下文会跟踪返回的实体;可通过对返回的 DbRawSqlQuery 调用 AsNoTracking 来更改此设置。请注意返回实体的类型始终是此集的类型,而不会是派生的类型。如果查询的一个或多个表可能包含其他实体类型的数据,则必须编写适当的 SQL 查询以确保只返回适当类型的实体。与接受 SQL 的任何 API 一样,对任何用户输入进行参数化以便避免 SQL 注入攻击是十分重要的。您可以在 SQL 查询字符串中包含参数占位符,然后将参数值作为附加参数提供。您提供的任何参数值都将自动转换为 DbParameter。context.Set(typeof(Blog)).SqlQuery("SELECT * FROM dbo.Posts WHERE Author = @p0", userSuppliedAuthor); 或者,您还可以构造一个 DbParameter 并将它提供给 SqlQuery。这允许您在 SQL 查询字符串中使用命名参数。context.Set(typeof(Blog)).SqlQuery("SELECT * FROM dbo.Posts WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor)); | |
ToString | 返回基础查询的 String 表示形式。 (继承自 DbQuery。) |
顶部
显式接口实现
名称 | 描述 | |
---|---|---|
IListSource.ContainsListCollection | 返回 false。 (继承自 DbQuery。) | |
IQueryable.Expression | IQueryable LINQ 表达式。 (继承自 DbQuery。) | |
IEnumerable.GetEnumerator | 返回 IEnumerator,其枚举的对象将针对数据库执行查询。 (继承自 DbQuery。) | |
IListSource.GetList | 引发一个异常,该异常指示不支持直接绑定到存储查询。相反,用数据填充 DbSet,例如,使用 Load 扩展方法,然后绑定到本地数据。对于 WPF,绑定到 DbSet.Local。对于 Windows 窗体,则绑定到 DbSet.Local.ToBindingList()。 (继承自 DbQuery。) | |
IQueryable.Provider | IQueryable 提供程序。 (继承自 DbQuery。) | |
IDbAsyncEnumerable.GetAsyncEnumerator | 返回 IDbAsyncEnumerator,其枚举的对象将针对数据库执行查询。 (继承自 DbQuery。) |
顶部
线程安全
此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。