2009-11-19 28 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