在运行时构造的LinQ到SQL查询
本文关键字:SQL 查询 LinQ 运行时 | 更新日期: 2023-09-27 18:18:00
我有一个xml文件,其中包含如下查询详细信息
<queries>
<query>
<name>GetStudentById</name>
<statement>select student_name from student where student_id=@id</statement>
</query>
</queries>
在c#代码中,用户将调用ExecuteQuery方法(字符串queryname, hashtable params)我将使用查询名称从xml文件中检索查询语句。
参数哈希表将包含如下值params [@ id的]= 5
然后,我将使用ado.net构造查询,并在构造查询语句并将参数列表传递给它后,在运行时使用ExecuteReader执行查询。
我想知道是否可以用LinQ来做。有人能告诉我如何执行语句作为一个LinQ查询?
谢谢,大卫
看看这篇文章。看看john skeet的回答,他解释了如何使用CSharpCodeProvider在运行时执行语句。
然而,你必须自己将语句从sql转换为linq。如果没有特别的原因,它必须是linq,我建议保持它在sql中,因为在一天结束时,你将解析sql到linq,然后返回到sql。
即使使用动态linq,你也会遇到问题,因为你总是需要在查询中指定from类。
另一个选择是,如果你想在你的实体框架模型中使用它,使用实体sql会更容易,查看这里和这里获取更多信息。
通过ADO使用字符串查询语句是一个相当大的飞跃。从。NET到Linq到SQL。在第一个实例中,您需要构建Linq to SQL实体模型/DataContext。你如何去解析sql语句从文本到Linq我不完全确定,但如果我想看看如何实现这一点,我会阅读表达式树的观点,以建立一个解析器,你的字符串查询和引用你的实体模型,以产生一个Linq查询。
在codeplex和另一个MS库找到了LinqTextQueryBuilder。下面的链接
LinqTextQueryBuilder
http://msdn.microsoft.com/en-us/vstudio/bb894665.aspx