Je dois obtenir tous les TEntitys de mi DbContext pour extraire toutes les informations de chaque table. J'ai des petites tables avec peu d'informations. J'ai ce code mais je ne travaille pas.Comment obtenir TEntity par son nom
var dbSetPropertiesLocal = local.GetDbSetProperties();
foreach (var item in dbSetPropertiesLocal)
{
Type type = item.PropertyType; // This need get the type of the actual TEntity
var enumerable = GetLocal<type>(item.Name, local);
}
Cette méthode renvoie toutes les données du DbSet spécifié par son nom et tE DbContext
public List<TEntity> GetLocal<TEntity>(string name, DbContext ctx)
{
var enumerable = (IEnumerable<TEntity>)(typeof([ClassNameOfMyContext]).GetProperty(name).GetValue(ctx, null));
return enumerable.ToList();
}
Cette méthode obtenir les propriétés de mon DbContext. J'utilise cela pour obtenir tous DbSets dans mon DbContext
public static List<PropertyInfo> GetDbSetProperties(this DbContext context)
{
var dbSetProperties = new List<PropertyInfo>();
var properties = context.GetType().GetProperties();
foreach (var property in properties)
{
var setType = property.PropertyType;
var isDbSet = setType.IsGenericType && (typeof(IDbSet<>).IsAssignableFrom(setType.GetGenericTypeDefinition()) || setType.GetInterface(typeof(IDbSet<>).FullName) != null);
if (isDbSet)
dbSetProperties.Add(property);
}
return dbSetProperties;
}
Le but de ce code est d'obtenir toutes les données de chaque entité dans votre dbcontext? –
oui, je fais un synchroniseur de base de données – Richard
N'est-il pas beaucoup plus facile juste d'utiliser 'context.Set() .ToList();' À cet effet comme context.Set () .ToList() ' –