DbSet 類別

[此頁面專屬於 Entity Framework 第 6 版。最新版本可從 'Entity Framework' NuGet 套件取得。如需 Entity Framework 的詳細資訊,請參閱 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 的執行個體。供測試複本使用的方法和屬性必須由測試複本實作,預設實作不執行任何作業 Include 的 AsNoTracking、AsStreaming 除外。

靠上

屬性

  名稱 描述
公用屬性 ElementType IQueryable 元素類型。 (繼承自 DbQuery)。
公用屬性 Local 取得 ObservableCollection<T>,代表此集合中所有 Added、Unchanged 和 Modified 實體的本機檢視。當從內容中加入或移除實體時,此本機檢視會維持同步的狀態。同樣地,從本機檢視加入或移除的實體將會自動加入至內容中或是從內容中移除。

靠上

方法

  名稱 描述
公用方法 Add 將給定的實體加入至 Added 狀態集合的基礎內容中,好讓呼叫 SaveChanges 時可將它插入資料庫中。
公用方法 AddRange 將給定的實體集合加入至要置於 Added 狀態之每個實體的集合基礎內容中,好讓呼叫 SaveChanges 時可將它插入資料庫中。
公用方法 AsNoTracking 傳回新的查詢,其中傳回的實體將不會在 DbContext 中快取。 (繼承自 DbQuery)。
公用方法 AsStreaming 已過時。 傳回會串流結果而非緩衝處理的新查詢。 (繼承自 DbQuery)。
公用方法 Attach 將給定的實體附加至集合基礎內容中。也就是說,此實體會放在 Unchanged 狀態的內容中,就像是已經從資料庫讀取一樣。
公用方法 Cast<TEntity> 傳回相等的泛型 DbSet<TEntity> 物件。
公用方法 Create() 針對此集合的類型建立實體的新執行個體。請注意,此執行個體不會加入或附加至集合中。如果設定基礎內容建立 Proxy 而且實體類型符合建立 Proxy 的需求,則傳回的執行個體將會是 Proxy。
公用方法 Create(Type) 針對此集合的類型或是衍生自此集合之類型的類型,建立實體的新執行個體。請注意,此執行個體不會加入或附加至集合中。如果設定基礎內容建立 Proxy 而且實體類型符合建立 Proxy 的需求,則傳回的執行個體將會是 Proxy。
公用方法 Equals 傳回指定的集合是否等於目前的集合。 (覆寫 DbQuery.Equals(Object)。)
受保護的方法 Finalize (繼承自 Object)。
公用方法 Find 尋找具有給定主索引鍵值的實體。如果具有給定主索引鍵值的實體存在於內容中,則會立刻傳回此實體,而不會對存放區發出要求。同樣地,如果是具有給定主索引鍵值的實體,則會對存放區發出要求,而且如果找到此實體,則會將它附加至內容中並傳回。如果內容或存放區中找不到任何實體,則會傳回 null。
公用方法 FindAsync(Object[]) 非同步尋找具有給定主索引鍵值的實體。如果具有給定主索引鍵值的實體存在於內容中,則會立刻傳回此實體,而不會對存放區發出要求。同樣地,如果是具有給定主索引鍵值的實體,則會對存放區發出要求,而且如果找到此實體,則會將它附加至內容中並傳回。如果內容或存放區中找不到任何實體,則會傳回 null。
公用方法 FindAsync(CancellationToken, Object[]) 非同步尋找具有給定主索引鍵值的實體。如果具有給定主索引鍵值的實體存在於內容中,則會立刻傳回此實體,而不會對存放區發出要求。同樣地,如果是具有給定主索引鍵值的實體,則會對存放區發出要求,而且如果找到此實體,則會將它附加至內容中並傳回。如果內容或存放區中找不到任何實體,則會傳回 null。
公用方法 GetHashCode 傳回指定之集合的雜湊函式。 (覆寫 DbQuery.GetHashCode()。)
公用方法 GetType 取得目前集合的類型。
公用方法 Include 指定要包含在查詢結果中的相關物件。 (繼承自 DbQuery)。
受保護的方法 MemberwiseClone (繼承自 Object)。
公用方法 Remove 將給定的實體標記為 Deleted,好讓呼叫 SaveChanges 時可從資料庫中將它刪除。請注意,此實體必須存在於某個其他狀態的內容中,然後才會呼叫此方法。
公用方法 RemoveRange 從要置於 Added 狀態之每個實體的集合基礎內容中中移除給定的實體集,讓呼叫 SaveChanges 時可將它從資料庫中刪除。
公用方法 SqlQuery 建立原始 SQL 查詢,此查詢將會傳回此集合中的實體。根據預設,傳回的實體會由內容所追蹤,這可藉由在傳回的 DbRawSqlQuery 上呼叫 AsNoTracking 來變更。請注意,傳回的實體一定會具有此集合的類型,而且絕對不會具有衍生類型。如果查詢的資料表可能包含其他實體類型的資料,則必須適當地撰寫 SQL 查詢,以確保只會傳回正確類型的實體。如同所有接受 SQL 的應用程式開發介面,任何使用者輸入都務必進行參數化以防範 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 Form,則繫結至 DbSet.Local.ToBindingList()。 (繼承自 DbQuery)。
明確介面實作私用屬性 IQueryable.Provider IQueryable 提供者。 (繼承自 DbQuery)。
明確介面實作私用方法 IDbAsyncEnumerable.GetAsyncEnumerator 傳回 IDbAsyncEnumerator,其在列舉時會對資料庫執行查詢。 (繼承自 DbQuery)。

靠上

執行緒安全

這個類型的任何 Public static (在 Visual Basic 中為 Shared) 成員都是安全執行緒。並非所有的執行個體成員都是安全執行緒。

請參閱

參考

System.Data.Entity 命名空間