动态linq对实体不在dbml中

时间:2011-01-31 14:28:43

标签: linq-to-sql expression-trees dynamic-linq

我被要求调查linq对我们正在构建的报告应用程序的sql的用处。我们的报告表是一个sql server宽表,包含数千个不同类型的列(String1-500,Int1-500等)。它保存了用户构建的动态报告的结果。

我们有一个第二个表,它将报表字段映射到报表上的列,并使用类型序号对(即列String1)。

我知道应该可以构建针对linq到sql dbml类的表达式树,它可以返回报告结果。我想更进一步,只返回映射到字段的列,并返回动态类型作为结果。

还要避免在dbml中维护庞大的报表类。

是否可以针对不在dbml中的表运行动态linq查询,即(不是linq to sql实体)?

我意识到这是L2S的混蛋,我不喜欢它。我正在考虑使用普通的旧ADO并返回一个非类型的结果集。

非常感谢,

伊恩

1 个答案:

答案 0 :(得分:0)

是的,可以针对不在DBML中的实体运行LINQ to SQL。

可能有几种方法可以做到这一点,但我能想到的最简单的方法是调用DataContext.ExecuteQuery来执行SQL语句并返回结果集。

如果您知道可以将结果类型转换为对象的结果类型,则可以将其作为对象类型列表返回。