Udostępnij za pośrednictwem


Definiowanie zestawów dbset

Podczas opracowywania za pomocą przepływu pracy Code First zdefiniujesz pochodną wartość DbContext, która reprezentuje sesję z bazą danych i uwidacznia zestaw DbSet dla każdego typu w modelu. W tym temacie omówiono różne sposoby definiowania właściwości dbSet.

DbContext z właściwościami DbSet

Typowym przypadkiem pokazanym w przykładach Code First jest posiadanie obiektu DbContext z publicznymi automatycznymi właściwościami DbSet dla typów jednostek modelu. Przykład:

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }
}

W przypadku użycia w trybie Code First spowoduje to skonfigurowanie blogów i wpisów jako typów jednostek, a także skonfigurowanie innych typów osiągalnych z tych elementów. Ponadto obiekt DbContext automatycznie wywoła metodę ustawiającą dla każdej z tych właściwości, aby ustawić wystąpienie odpowiedniego zestawu dbSet.

DbContext z właściwościami IDbSet

Istnieją sytuacje, takie jak podczas tworzenia makiety lub podróbek, gdzie bardziej przydatne jest deklarowanie właściwości zestawu przy użyciu interfejsu. W takich przypadkach można użyć interfejsu IDbSet zamiast zestawu DbSet. Przykład:

public class BloggingContext : DbContext
{
    public IDbSet<Blog> Blogs { get; set; }
    public IDbSet<Post> Posts { get; set; }
}

Ten kontekst działa w dokładnie taki sam sposób, jak kontekst, który używa klasy DbSet dla jej właściwości zestawu.

DbContext z właściwościami zestawu tylko do odczytu

Jeśli nie chcesz uwidaczniać publicznych zestawów dla właściwości DbSet lub IDbSet, możesz zamiast tego utworzyć właściwości tylko do odczytu i samodzielnie utworzyć wystąpienia zestawu. Przykład:

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs
    {
        get { return Set<Blog>(); }
    }

    public DbSet<Post> Posts
    {
        get { return Set<Post>(); }
    }
}

Należy pamiętać, że funkcja DbContext buforuje wystąpienie elementu DbSet zwrócone z metody Set, tak aby każda z tych właściwości zwracała to samo wystąpienie za każdym razem, gdy jest wywoływana.

Odnajdywanie typów jednostek dla funkcji Code First działa w taki sam sposób, jak w przypadku właściwości z publicznymi metodami pobierania i ustawiaczy.