用户希望能够选择要在网格中查看的某些列,但列来自多个不同的表。我正在考虑与所有表进行连接,然后让用户选择他们想要查看的列的复选框,然后它将填充到GridView中。我想知道除了我的方法之外是否有更简单的方法来完成这个。有大约20-30个表,我需要做很多连接才能使它工作。理想情况下,我希望像在Visual Studio中的ASP.NET中使用SQL数据源中的查询生成器一样。
答案 0 :(得分:0)
为什么不使用LINQ呢?示例(如果您使用的是ASP.NET Web表单和ADO.NET实体框架):
db.InitialTable
.Include(x => x.table1)
.Include(x => x.table2)
.Include(x => x.table3)
.Include(x => x.table4)
.Include(x => x.table5)
.Include(x => x.table6)
// keep adding as much tables as you want...
.ToList();
还要确保包含此命名空间:
using System.Data.Entity;
答案 1 :(得分:-1)
用户能够从某种逻辑对象的属性中选择的列吗?如果是这样,为什么不使用某种ORM在内存中完全构建对象。这将要求您执行完整的连接集,这无疑是PITA,但随后您可以根据用户输入选择将显示的对象的属性(属性)。对我来说,这似乎是解决这个问题的“最干净”的方法。
编辑:我不确定为什么这个答案被低估,但我会提供更多信息,说明为什么我认为这是一个更好的解决方案。如果SQL查询是基于用户输入动态构建的,那么您的应用程序将成为调试的噩梦。但是,如果您始终使用相同的查询来构建要显示的逻辑“对象”,则从该对象中选择性地显示属性非常简单。不可否认,您需要的查询将是丑陋的并且有很多连接,但是您只需要维护一件事,而不是尝试维护一些动态生成所有可能组合的过程。