1

我在可能是一件简单的事情或我误解的事情上有点挣扎......但无论如何,首先使用 Linq 实体代码,我试图让我的一些表无法从客户端访问,但没有成功。

使用 Breeze,我制作了一个数据上下文,它只包含我想要公开的数据库集,很好。但是当我使用 .expand() 编写查询时。例如,假设我有一个要公开的帖子表和一个要隐藏的所有者表。使用如下查询:

var query = EntityQuery
            .from('Posts')
            .expand('Owner');

我仍然可以看到所有者的所有列。

所以问题是:在 Linq 中,我应该如何保护/保护/隐藏我想要隐藏的表和/或特定列?

经过一番挖掘,我发现的只是 [JsonIgnore] 属性,这对我来说似乎不够。

做这个的最好方式是什么?我觉得我在这里错过了一些可能很大的东西,但这是一天结束的时候......

谢谢

4

2 回答 2

1

如果您使用的是 Breeze 的 WebApi 实现,那么 Breeze 还支持 ODataQueryOptions(请参见此处此处)。

这允许您标记控制器方法,以限制查询的解释方式。例如,要仅允许过滤您的“帖子”查询并因此排除从任何“帖子”请求中“扩展”或“选择”“所有者”的能力,您可以执行以下操作。

[Queryable(AllowedQueryOptions=AllowedQueryOptions.Filter| AllowedQueryOptions.Top | AllowQueryOptions.Skip)]
public IQueryable<Posts> Posts() {
  ....

}

于 2013-06-04T17:26:45.513 回答
0

好吧,显然我的问题已经在这里解决了: 使用 OData 和 IQueryable 的风险

我刚找到它。

于 2013-06-04T16:31:33.710 回答