Linq hide columns



我有点挣扎,什么可能是一个简单的问题或我误解的东西…但无论如何,首先使用Linq实体代码,我试图保持我的一些表从客户端不可访问,没有成功。

使用Breeze,我已经创建了一个数据上下文,它只包含我想要公开的数据库集,很好。但是当我使用.expand()编写查询时。例如,假设我有一个posts表,我想公开它,还有一个Owner表,我想隐藏它。使用如下查询:

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

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

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

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

最好的方法是什么?我觉得我可能错过了一些重要的东西,但这是一天的结束。

谢谢

如果你正在使用Breeze的WebApi实现,那么Breeze也支持ODataQueryOptions(见这里和这里)。

这允许你标记你的控制器方法,以限制如何解释查询。例如,只允许过滤您的"帖子"查询,从而排除"扩展"或"选择"的能力,从任何"帖子"请求的"所有者",你可以这样做:

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

}

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

我刚找到它。

最新更新