我有一个Winforms应用程序,可以让用户创建自己的报告。最简单的是,他们设计了加密并保存到数据库中的查询。
现在可以通过网络查看这些报告。
处理此问题的最佳方法是什么?理想情况下我想使用MVC,但是没有模型或视图模型,因为这些查询可以为应用程序中的任何表返回数据,因此我不能使用硬编码的等等。显然我可以访问SQL来执行它。
我想知道传统的ASP.Net在这种情况下是否表现更好,即/执行SQL并将其放在DataTable中,但希望能从社区中获得一些想法。
答案 0 :(得分:1)
您将使用哪个版本的.NET?如果是4,那么您可以使用新的dynamic
关键字。
在新的网络矩阵中使用了这个例子。它需要一个sql字符串并执行查询,结果对象将sql表字段作为属性。
由于Web矩阵构建在.NET平台上,您可以在Visual Studio中使用相同的库和方法。
如果您不知道对象上的属性,可以使用refection循环对象中的属性。
这是一个显示一些基础知识的link。
更新
var db = Database.Open("bakery");
var p = db.Query("SELECT * FROM PRODUCTS"); // This returns a list of products
或者单个结果
var db = Database.Open("TDL");
var selectQueryString = "SELECT * FROM Articles WHERE slug = @0";
var show = db.QuerySingle(selectQueryString, slug);
第一个例子来自我已经包含的链接,第二个例子来自here。
更新2:
您需要的程序集是WebMatrix.Data和WebMatrix.WebData,MSDN。正如我之前所说,你需要使用反射来查找对象属性,只需要使用Google c#reflection,并且有很多关于使用它的教程。
答案 1 :(得分:1)
在类似的情况下,我在客户端使用带有DataTables.net的ASP.NET MVC。我在DataSet上有一个扩展方法,它返回DataTables.net所需的JSON格式的数据。您将需要html中的表/ thead存根描述每一列,但如果您从SQL查询中解析列名,则可能会生成,如果您在用户设计报表时存储列元数据,则可能更好