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.