Definování sad dbset
Při vývoji pomocí pracovního postupu Code First definujete odvozený DbContext, který představuje vaši relaci s databází a zveřejňuje DbSet pro každý typ v modelu. Toto téma popisuje různé způsoby definování vlastností DbSet.
DbContext s vlastnostmi DbSet
Běžným případem zobrazeným v příkladech Code First je mít DbContext s veřejnými automatickými vlastnostmi DbSet pro typy entit modelu. Příklad:
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
}
Pokud se používá v režimu Code First, nakonfiguruje se blogy a příspěvky jako typy entit a také konfigurace dalších typů dostupných z těchto typů. Kromě DbContext bude automaticky volat setter pro každou z těchto vlastností nastavit instanci příslušné DbSet.
DbContext s vlastnostmi IDbSet
Existují situace, například při vytváření napodobenin nebo falešných výrazů, kde je užitečnější deklarovat vlastnosti sady pomocí rozhraní. V takových případech lze místo DbSet použít rozhraní IDbSet. Příklad:
public class BloggingContext : DbContext
{
public IDbSet<Blog> Blogs { get; set; }
public IDbSet<Post> Posts { get; set; }
}
Tento kontext funguje přesně stejně jako kontext, který používá třídu DbSet pro své set vlastnosti.
DbContext s vlastnostmi sady jen pro čtení
Pokud nechcete zveřejnit veřejné setter pro vlastnosti DbSet nebo IDbSet, můžete místo toho vytvořit vlastnosti jen pro čtení a vytvořit instance sady sami. Příklad:
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs
{
get { return Set<Blog>(); }
}
public DbSet<Post> Posts
{
get { return Set<Post>(); }
}
}
DbContext ukládá instanci DbSet vrácenou z metody Set do mezipaměti, aby každá z těchto vlastností vrátila stejnou instanci pokaždé, když je volána.
Zjišťování typů entit pro Code First funguje stejným způsobem jako u vlastností s veřejnými gettery a settery.