Перебор таблиц в контексте и свойства этих таблиц - PullRequest
2 голосов
/ 03 августа 2010

Я перебираю таблицы контекста, а затем свойства этих таблиц, чтобы загружать все столбцы в контексте.Я получил некоторую помощь через другой вопрос, но я не могу понять, как перебирать свойства столбца фактической таблицы.


Окончательный рабочий код:

public static void DisableLazyLoading(this DataContext context)
{
    DataLoadOptions options = new DataLoadOptions();

    var contextTables = context.GetType().GetProperties().Where(n => n.PropertyType.Name == "Table`1");
    foreach (var contextTable in contextTables)
    {
        var tableType = contextTable.GetValue(context, null).GetType().GetGenericArguments()[0];
        var tableProperties = tableType.GetProperties().Where(n => n.PropertyType.Name != "EntitySet`1");
        foreach (var tableProperty in tableProperties)
        {
            ParameterExpression paramExp = Expression.Parameter(tableType, "s");
            Expression expr = Expression.Property(paramExp, tableProperty.Name);
            options.LoadWith(Expression.Lambda(expr, paramExp));
        }
    }

    context.LoadOptions = options;
}

1 Ответ

1 голос
/ 03 августа 2010

Вы получаете только ProperInfo с. Вам необходимо получить значения из the PropertyInfo s:

var tablePropertInfos = context.GetType().GetProperties().Where(
    n => n.PropertyType.Name == "Table`1");

foreach (var tablePropertyInfo in tablePropertInfos)
{

    // Get the actual table
    var table = tablePropertyInfo.GetValue(context, null);

    // Do the same for the actual table properties

}

Получив класс PropertyInfo, вы должны получить значение с помощью метода GetValue.

...