我们目前正在调查在我们的Web API中使用OData查询语法。 我们不打算实现完整的OData实现 - 仅仅利用查询语法。ASP.NET Web API OData - 将DTO查询转换为实体查询
它通常被认为是很好的应用程序体系结构,可将您的应用程序分为几个层。 在现代Web应用程序中,这些图层将包含一个数据层和UI /传输层,可以将数据库中存储的信息发送给客户时对其进行不同的建模。
例如:你可以有一个数据库(实体框架)的模型,看起来像这样:
public class Employee
{
public Guid Id {get; set;}
public string Name {get; set;}
public int AccessLevel {get; set;}
}
但你的Web的API可能在不同的传输格式将这些资料给你的客户:
public class EmployeeDto
{
public string Name {get; set;}
public string SecurityClearence {get; set;}
}
使用ASP.NET Web API和(大概??)Microsoft ASP.NET Web API OData库我们将如何实现这样的场景,即我们的客户将针对DTO格式编写查询 例如:
?$filter=(SecurityClearence eq 'TopSecret')
...然后我们会根据我们的数据格式来翻译它。 如:
?filter=(AccessLevel eq 007)
或其他格式,让我来动态查询我的数据库,如表达。 如:
db.Employees.Where(translatedExpression);
我已经想到了几种方法来实现手动这一点,但我渴望知道别人会怎么解决这个问题,因为我觉得我的实现至今是相当粗糙的,不可能容纳审查。
Web API OData库(以及相关的EDM库)的功能是否可以为我实现部分或全部功能?
我会看看那个软件包,我看着写一些类似的东西。 我不喜欢我提出的两个原因:1)预测是在SQL中完成的,这意味着我们不再查询关键指标。 2)我们对我们的API进行了版本管理,并且我不想为每个API版本编写不同的投影。我首选的方法是在查询数据库之前翻译它们的查询。虽然这感觉更难。 –