Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Lors du développement avec le flux de travail Code First, vous définissez un DbContext dérivé qui représente votre session avec la base de données et expose un DbSet pour chaque type de votre modèle. Cette rubrique décrit les différentes façons dont vous pouvez définir les propriétés DbSet.
DbContext avec les propriétés DbSet
Le cas courant présenté dans les exemples Code First consiste à avoir un DbContext avec des propriétés DbSet automatiques publiques pour les types d’entités de votre modèle. Par exemple:
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
}
Lorsqu’il est utilisé en mode Code First, il configure les blogs et les publications en tant que types d’entités, ainsi que la configuration d’autres types accessibles à partir de ces types. En outre, DbContext appelle automatiquement le setter pour chacune de ces propriétés afin de définir une instance du DbSet approprié.
DbContext avec les propriétés IDbSet
Il existe des situations, comme lors de la création de simulations ou de faux, où il est plus utile de déclarer vos propriétés de jeu à l’aide d’une interface. Dans ce cas, l’interface IDbSet peut être utilisée à la place de DbSet. Par exemple:
public class BloggingContext : DbContext
{
public IDbSet<Blog> Blogs { get; set; }
public IDbSet<Post> Posts { get; set; }
}
Ce contexte fonctionne exactement de la même façon que le contexte qui utilise la classe DbSet pour ses propriétés définies.
DbContext avec des propriétés définies en lecture seule
Si vous ne souhaitez pas exposer de setters publics pour vos propriétés DbSet ou IDbSet, vous pouvez créer des propriétés en lecture seule et créer vous-même les instances définies. Par exemple:
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs
{
get { return Set<Blog>(); }
}
public DbSet<Post> Posts
{
get { return Set<Post>(); }
}
}
Notez que DbContext met en cache l’instance de DbSet retournée à partir de la méthode Set afin que chacune de ces propriétés retourne la même instance chaque fois qu’elle est appelée.
La découverte de types d’entités pour Code First fonctionne de la même façon que pour les propriétés avec des getters et des setters publics.