我有一个n层应用程序。我已经将后端的内部类型与要在前端的webApi中公开的内部类型之间的模型分离。
我正在尝试使用ODataQueryOptions在前端中使用查询,我面临的问题是前端不知道我模型的属性。有没有一种通用的方法可以将我在webApi中公开的前端名称转换为ODataQueryOptions所需的内部属性名称?
即我可以使用此代码从查询中获取属性名称。
ODataQueryOptions<MyModel> queryString;
if (queryString.OrderBy != null && queryString.OrderBy.OrderByClause != null)
{
foreach (OrderByNode node in queryString.OrderBy.OrderByNodes)
{
OrderByPropertyNode typedNode = node as OrderByPropertyNode;
}
}
我在做下面的工作公开我的模型。
public class MyModel
{
/// <summary>
/// Gets or Sets Name
/// </summary>
[DataMember(Name = "name", EmitDefaultValue = false)]
public string Name { get; set; }
}
当我从前端查询时,我想按以下方式进行操作,因为这是我的webApi返回的内容。
http://localhost:8888/myModel?$orderby=name desc
但是现在我必须使用大写字母,因为它与后端耦合
http://localhost:8888/jobs?$orderby=Name desc
我必须手动编写属性之间的转换吗?还是有办法实现这一目标?
最佳答案
您正在使用System.Web.Http.OData还是System.Web.OData?
如果使用System.Web.OData,则已经实现了名称别名,您可以轻松进行所需的操作。
关于c# - 将OData查询转换为DataContract模型类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42904413/