Modèle d’adaptateur pour les propriétés IDbSet d’une classe DbContext

Existe-t-il un moyen d’utiliser la méthode décrite dans cette réponse? Aucune méthode FindAsync () sur IDbSet pour les propriétés DbSet d’un DbContext?

Modifier:

La réponse liée contient une description de la construction d’une interface héritant de IDbSet et de la prise en charge de la méthode SearchAsync de la classe DbSet. Je comprends tout ce que Keith Payne a écrit, mais je ne sais pas comment l’utiliser dans DbContext.

Par exemple, j’ai un DbContext qui ressemble à ceci:

public class MyContext : DbContext { public DbSet Customers { get; set; } } 

Comment utiliser MyDbSet (classe décrite dans la réponse.) Ou une classe similaire au lieu de DbSet?

 public class MyContext : DbContext { public MyDbSet Customers { get; set; } } 

Le problème est maintenant qu’Entity Framework semble ne générer que des tables pour les propriétés de type IDbSet ou DbSet.

    Vous avez régulièrement DbSet dans votre contexte et créez un adaptateur ajoutant l’interface demandée.

     public interface IAsyncDbSet : IDbSet where T : class { Task FindAsync(params Object[] keyValues); } public sealed class DbSetAdapter : IAsyncDbSet, IDbSet where T : class { private readonly DbSet _innerDbSet; public DbSetAdapter(DbSet innerDbSet) { _innerDbSet = innerDbSet; } public Task FindAsync(params object[] keyValues) { return _innerDbSet.FindAsync(keyValues); } //Here implement each method so they call _innerDbSet like I did for FindAsync } 

    Maintenant, vous pouvez créer un DbSetAdapater quand vous en avez besoin et obtenir un IAsyncDbSet. Vous pouvez dupliquer vos propriétés car EF semble les ignorer ou append une méthode d’extension ToAsyncDbSet() à IDbSet

     public class MyContext : DbContext { public DbSet Customers { get; set; } public IAsyncDbSet CustomersAsync { get { return new DbSetAdapter(Customers); } } }