2010-08-01 2 views
0

Я задавался вопросом, есть ли способ предоставить имя таблицы для запроса linq во время выполнения. Я заинтересован в простом запросе, какДинамические имена таблиц с Linq для объектов?

select * from @someTableName 

Я искал много для ответа, но не смог найти какой-либо помощи в сети. Был пост на MSDN -> link

Дэйв Рассел предложил сделать:

var p = ctx.GetType.GetProperty(oName).getValue(ctx,null) 

Но помимо получения имущества с отражением я не знаю, как работать все остальное, чтобы быть в состоянии выполнить запросы по этому свойству:

from x in p select x; 
+0

IMO, когда вы это сделаете, вам не хватит силы LINQ. Почему бы не использовать простой старый SQL? – Steven

+0

Мне нужно иметь IQueryable в результате, поскольку он понадобится позже. – gixx

ответ

1

Попробуйте метод ExecuteStoreQuery. Вы выполняете SQL-запрос и получаете ObjectResult. Обратите внимание, что этот метод доступен только в Entity Framework v4.

+0

Не совсем ясно, если он * действительно хочет табличные имена или если он действительно хочет имена сущностей. Этот метод будет использовать имена таблиц. Для имен сущностей используйте ESQL или 'System.Linq.Dynamic'. –

+0

У меня есть разные таблицы с различными столбцами, и они все сопоставлены с Entity Model. Поэтому во время выполнения я выбираю имя таблицы и извлекаю все записи из этой конкретной таблицы. Итак, все, что у меня есть во время выполнения, - это имя таблицы, но я не знаю, как использовать его для извлечения данных (нужно заказать IQueryable для jqGrid). Не следует ли параметризовать ExecuteStoreQuery перед компиляцией или я делаю что-то неправильно здесь? – gixx

+0

О и имена сущностей такие же, как имена таблиц в хранилище данных. – gixx