【发布时间】:2014-06-11 00:55:35
【问题描述】:
在获取实体的过程中,我需要在服务器端实现一些业务逻辑,以确保用户对正在检索的项目具有权限。
为此,我的客户端微风查询代码更改为:
var query = breeze.EntityQuery
.from(theUrl)
.expand("RelatedEntity")
.where(breeze.Predicate.create("id", "==", id));
到:
var query = breeze.EntityQuery
.from(theUrl)
.withParameters({ id: id })
.expand("RelatedEntity");
在服务器端,我的控制器操作从:
[HttpGet]
[BreezeQueryable]
public IQueryable<MyEntity> MyEntities()
{
return _uow.MyEntityRepo.All();
}
类似于:
[HttpGet]
[BreezeQueryable]
public IHttpActionResult FindById(int id)
{
var userId = HttpContext.Current.User.Identity.GetUserId();
var hasPermission = CheckPermission(id, userId); // some implementation ...
if (hasPermission) {
var myEntity = _uow.MyEntityRepo.GetById(id);
return Ok(myEntity)
} else {
return NotFound();
}
}
我可以看到查询是通过过滤器进行的:
http://localhost:42789/breeze/MyEntity/FindById?$expand=RelatedEntity&id=1002
但是,RelatedEntity 未定义。当使用EntityQuery 而不是withParameters 时,相关实体会很好地展开并在结果集中可用。
谢谢
【问题讨论】:
标签: breeze asp.net-web-api2 durandal-2.0