2011-12-15 94 views
0

构造我有一个包含查询的细节,如LINQ到SQL查询在运行时

<queries> 
    <query> 
    <name>GetStudentById</name> 
    <statement>select student_name from student where [email protected]</statement> 
    </query> 
</queries> 

在C#代码的XML文件时,用户将调用方法的executeQuery(串queryname,哈希表PARAMS) 我将检索使用查询名称从xml文件中查询语句。

params哈希表表将包含像 PARAMS [“@ ID”] = 5

然后我将使用ADO .NET来构造查询和使用的ExecuteReader构造查询语句之后在运行时执行它的值和传递参数列表。

我想知道是否有可能通过使用LinQ来做到这一点。有人能告诉我如何执行语句作为LinQ查询吗?

感谢,

大卫

+0

听起来像一个完美的适合小巧玲珑。 – leppie 2011-12-15 10:11:45

回答

0

这是一个相当大的飞跃,从通过ADO.NET使用字符串查询语句的LINQ to SQL去。在第一种情况下,您需要将您的Linq构建到SQL实体模型/ DataContext。你如何去解析一个sql语句从文本到Linq我不完全确定,但如果我想研究如何实现这一目标,我会阅读表达式树,以构建一个解析器,它接受你的字符串查询并引用您的实体模型以生成linq查询。

1

看看这个SO的帖子。看看约翰斯威特的答案,他解释了如何使用CSharpCodeProvider在运行时执行语句。您将不得不将您的语句从sql转换为linq自己。如果没有特别的理由必须是linq,我会建议将它保存在sql中,因为在一天结束时,你将解析sql到linq,然后返回到sql。

即使使用dynamic linq您也会遇到问题,因为您始终必须在查询中指定from类。

另一种选择是,如果你想用你的实体框架模型,这将是更容易使用entity sql,看看herehere欲了解更多信息。