2009-11-19 24 views
1

我正在开发一个项目,用户需要使用复杂的Linq语句生成数据集来构建报告查询。在数据库中存储报告程序集(.net)

编译这些用户生成的查询然后执行它们的最佳方式是使用CSharpCodeProvider对象构建程序集,然后将结果存储在数据库blob中。

这个过程有什么问题吗?另外,如何限制用户程序集的权限以仅允许针对我提供的有限的一组对象执行?

谢谢!

+0

您是否正在构建报告引擎? – 2009-11-19 16:01:14

+0

是的,但基于Linq而不是SQL。 – 2009-11-19 16:27:48

回答

1

您不应该将查询保存为生成的程序集。更简单的方法是将针对数据库执行的SQL保存以供将来使用。使用DataContext的GetCommand方法获取SQL并将其作为“已保存”查询保存。

+0

不完全是我在找什么,但这是一个非常好的主意。在这种情况下,它会是eSQL,因为我正在对EF运行,但我稍后会重新访问,我可能会决定采用它。 – 2009-11-19 16:27:02

+0

实际上,使用EF它仍然是SQL再次执行SQL db。 eSQL用于查询实体。 – 2009-11-19 17:35:04