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) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

请参阅

参考

System.Data.Entity 命名空间