2010-08-01 73 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 2010-08-01 19:46:13

+0

我需要有一个IQueryable作为结果,因为它将在稍后需要。 – gixx 2010-08-01 22:49:39

回答

1

尝试使用ExecuteStoreQuery方法。您执行SQL查询并获取ObjectResult。请注意,此方法仅在Entity Framework v4中可用。

+0

从问题来看,他是否真的想要表名,或者他是否真的想要实体名称,这一点一点都不清楚。该方法将使用表名。对于实体名称,使用ESQL或'System.Linq.Dynamic'。 – 2010-08-02 12:19:22

+0

我有各种不同的列表,他们都映射到实体模型。所以在运行时我选择一些表名并从该特定表中检索所有记录。所以我在运行时都是表名,但我不知道如何使用它来检索数据(需要为jqGrid订购IQueryable)。 ExecuteStoreQuery在编译之前必须进行参数化,否则我在这里做错了什么? – gixx 2010-08-02 15:55:59

+0

哦,实体名称与数据存储中的表名相同。 – gixx 2010-08-02 16:35:31