如何从特定的Web api调用中返回breeze实体?

时间:2013-07-08 21:36:41

标签: breeze

我所有正常的微风查询和更新工作非常完美,现在我已经习惯了,它非常棒!

我当然希望变得困难,并使用breeze加载实际上不是查询结果的实体。或者至少不是直接的。

基本上我有另一个对象使用我的实体类来查找某些匹配的对象。这个逻辑并不重要。结果是调用该对象上的方法将返回IEnumerable<MyObject>(实际上是IList<MyObject>),然后我想返回微风以在客户端使用。所以我猜这是一个查询,只是其他东西在做查询逻辑,而不是微风传递它的where和orderby子句。

但目前,我只是从微风Object #<Object> has no method 'getProperty'

中得到错误

只是为了解释我是如何尝试实现的:

第一次尝试:

[HttpGet]
public object SchemasForStatementFile(int fileId)
{
    StatementFile statementFile = _contextProvider.Context.Statements.SingleOrDefault(x => x.Id == fileId);
    IEnumerable<StatementFileSchema> schemasForFile = _parsingEngine.FindSchemasForFile(statementFile);
    return new { schemas = schemasForFile.ToArray() };
}

第二次尝试:

[HttpGet]
public IQueryable<StatementFileSchema> SchemasForStatementFile(int fileId)
{
    StatementFile statementFile = _contextProvider.Context.Statements.SingleOrDefault(x => x.Id == fileId);
    IEnumerable<StatementFileSchema> schemasForFile = _parsingEngine.FindSchemasForFile(statementFile);
    return schemasForFile.AsQueryable();
}

任何一种方法都会出现同样的错误。

1 个答案:

答案 0 :(得分:1)

好问题!

这正是 JsonResultsAdapter 的用例。查看源代码中的Edmunds示例或“默认”JsonResultsAdapter。我们的想法是JsonResultsAdapter将获取查询的结果并规定它包含的'entityTypes'。如果需要,它还可以变形数据。有关详细信息,请参阅此处:General discussion of the JsonResultsAdapter和此处JsonResultsAdapter api