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.