Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.