Database 非CRUD查询的API设计

Database 非CRUD查询的API设计,database,api,Database,Api,我们正在考虑创建一个API应用程序,供我们的内部应用程序和客户使用。这对于CRUDAPI查询来说似乎很简单,但对于更复杂的查询,我们遇到了问题 例如,假设一个内部应用程序想知道“对于每个公司,计算用户数量和仪表盘数量,然后返回结果”,那么如何将其作为API的一部分公开 我可以想象,如果我们对所有公司的列表发出一个查询,然后对每个公司发出两个查询来统计用户和仪表盘的数量,那么性能就会成为一个问题 另外,我们如何处理当前正在硬编码SQL以进行优化的问题 也欢迎阅读任何推荐的阅读资料。我为所有数据库表

我们正在考虑创建一个API应用程序,供我们的内部应用程序和客户使用。这对于CRUDAPI查询来说似乎很简单,但对于更复杂的查询,我们遇到了问题

例如,假设一个内部应用程序想知道“对于每个公司,计算用户数量和仪表盘数量,然后返回结果”,那么如何将其作为API的一部分公开

我可以想象,如果我们对所有公司的列表发出一个查询,然后对每个公司发出两个查询来统计用户和仪表盘的数量,那么性能就会成为一个问题

另外,我们如何处理当前正在硬编码SQL以进行优化的问题


也欢迎阅读任何推荐的阅读资料。

我为所有数据库表生成crud存储过程,包括按所有外键选择,然后为所有数据库表生成域对象。对我来说,使用对象映射感觉更具可伸缩性

如果存在会导致问题或不符合模型的特定数据视图。我将使用扩展数据扩展现有的域对象。例如:

public class Customer
{
    public int CustomerID{get;set;}
}

public class CustomerListingView:Customer
{
    public int NumberOfOrders{get;set;}
    public int NumberOfSomethingElse{get;set;}
} 

这至少允许您将自定义视图数据强制转换为需要超级类型的控制器函数。

Hmmm我不会执行存储过程,但资源扩展模型肯定是我应该研究的。