Мне нужно получить все TEntitys из mi DbContext, чтобы извлечь всю информацию из каждой таблицы. У меня мало столов с небольшой информацией. У меня этот код, но я не работаю.Как получить TEntity по имени
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);
}
Этот метод возвращает все данные из указанного DbSet по имени и теллур указано DbContext
public List<TEntity> GetLocal<TEntity>(string name, DbContext ctx)
{
var enumerable = (IEnumerable<TEntity>)(typeof([ClassNameOfMyContext]).GetProperty(name).GetValue(ctx, null));
return enumerable.ToList();
}
Этот метод получить свойства от моего DbContext. Я использую это для получить весь DbSets в моем 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;
}
Цель этого кода - получить все данные от каждого объекта в вашем dbcontext? –
Да, я делаю синхронизатор базы данных – Richard
Не намного ли проще использовать 'context.Set() .ToList();' поэтому как 'context.Set () .ToList()' –