我在具有SQL Express数据库的客户端和服务器上都使用Breeze。
我的服务器代码:
[Authorize]
[BreezeController]
public class DataController : ApiController{
[HttpGet]
public IQueryable<Product> Products()
{
...
}
}
我的客户代码:
var getProducts = function () {
var query = entityQuery.from('Products');
return manager.executeQuery(query)
.then(querysucceeded)
.fail(queryfailed);
...
};
这很好。但是,文档说传递给的参数EntityQuery.from(...)
应该是微风的Web api控制器方法之一。因此,我希望将以下内容添加到服务器:
[HttpGet]
public IQueryable<Product> TestMethod()
{
...
}
这给客户:
var getProjects = function () {
var query = entityQuery.from('TestMethod');
return manager.executeQuery(query)
.then(querysucceeded)
.fail(queryfailed);
...
};
我希望这可以正常工作,但不能:(我在控制台上收到以下错误:
未捕获的错误:找不到resourceName:'TestMethod'的实体类型。考虑将“ EntityQuery.toType”调用添加到查询中,或调用MetadataStore.setEntityTypeForResourceName方法为该resourceName注册一个EntityType。
Breeze客户端需要知道与每个“ resourceName”相对应的EntityType。由于元数据,它对于“产品”资源知道这一点,该资源名与“产品”实体类型配对,但不知道“ TestMethod”返回什么。
所以您的解决办法是致电
manager.setEntityTypeForResourceName("TestMethod", "Product");
在执行查询之前。或者,您可以更改查询以使用“ toType”方法。
var query = entityQuery.from('TestMethod').toType("Product");
return manager.executeQuery(query)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句