我们正在构建一个应用程序,我们需要以对象形式存储Query,如:
class Query{
public Select s{get;set;}
public From f{get;set;}
}
class select {
public List< Column > columns {get;set;}
}
class Column{
public string ColumnName {get;set;}
public string AliasName {get;set;}
}
class From {
public Table mainTable{get;set;}
public List<JoinTable>{get;set;}
}
class Table {
public string tableName{get;set;}
public string Alias{get;set;}
}
class JoinTable:Table{
public string OnExpression{get;set;}
}
我们将详细信息存储在这些对象中,以便稍后我们可以使用这些对象为任何数据库创建查询。对于子查询也可能更复杂。如果有更好的设计,请告诉我。
注意:我们正在使用C#开发此应用程序。
答案 0 :(得分:0)
总有改进的余地,因为“更好”对我们每个人都有不同的含义,我将只关注可证明的改进。由于始终存在改进的空间,因此该列表不是完整的列表,也不是最终列表:
select c1, c2
from (select c3 as c1, c4 as c2 from yourtable) renamedtable;
您需要允许排序
您需要允许分组
您需要允许分页,即从偏移量开始加载有限数量的记录
这些只是对您的ORM的评论,但您可能需要重用表达式。您可能希望能够存储这些内容。此外,您可能希望能够为任意数据库中的表生成类。 LINQ是一个必备条件,您可能想要查看其功能并考虑是否需要这些功能,如果需要,那么这些功能将如何适合您的情况。