Я пытаюсь использовать отражение, чтобы автоматически проверить, что все мои сущности linq2sql соответствуют тестовой базе данных.Я думал, что сделаю это, получив все классы, которые наследуются от DataContext из моей сборки:
var contexttypes = Assembly.GetAssembly(typeof (BaseRepository<,>)).GetTypes().Where(
t => t.IsSubclassOf(typeof(DataContext)));
foreach (var contexttype in contexttypes)
{
var context = Activator.CreateInstance(contexttype);
var tableProperties = type.GetProperties().Where(t=> t.PropertyType.Name == typeof(ITable<>).Name);
foreach (var propertyInfo in tableProperties)
{
var table = (propertyInfo.GetValue(context, null));
}
}
Пока все хорошо, это циклически проходит через каждый ITable<>
в каждом текстовом тексте проекта.Если я отлаживаю код, то «таблица» создается должным образом, и если я расширяю представление результатов в отладчике, я вижу фактические данные.
НО, я не могу понять, как заставить мой код на самом делезапросить эту таблицу.Я действительно хотел бы просто иметь возможность сделать table.FirstOrDefault (), чтобы получить верхнюю строку из каждой таблицы и убедиться, что выборка SQL не дает ошибок.Но я не могу привести эту таблицу к тому, что могу запросить.
Любые предложения о том, как я могу сделать этот вопрос?Мне было бы достаточно просто вызвать .Count (), чтобы убедиться, что у сущностей нет ничего, что не соответствует столбцам таблицы.