不允许在Breeze中针对特定EntityTypes进行扩展

时间:2013-02-01 13:43:00

标签: entity-framework asp.net-web-api odata breeze

我正在寻找一种优雅的方式,不允许BreezeJS中的特定EntityTypes为expanded。我们有一个(某种程度上)公共Web服务,我们正在公开,有些表我们不希望该服务的某些消费者看到它们。虽然我们只能为这些特定的表公开Web API方法,但是服务的使用者仍然可以通过从相关表扩展来访问这些表。

注意:我已经发布了这个问题的答案,给出了解决方法。但是,我很感兴趣,如果有人知道更优雅的方式为这只特殊的猫皮肤。

1 个答案:

答案 0 :(得分:1)

UserVoice page for requesting this feature to be formally added to Breeze,Ward Bell提出了一个体面的解决方案:

  

同时,在你的控制器中,你可以检查来自$ select和$ expand的请求的查询字符串,如果你看到它就抛出异常。

我猜这看起来像这样:

    [HttpGet]
    public IQueryable<Widget> Widgets() {
        if (!string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["$expand"]))
        {
            throw new Exception("Ah ah ah, you didn't say the magic word!");
        }
        return _contextProvider.Context.Widgets;
    }

...阻止所有扩展,或阻止扩展功能的更具体的东西。这不是太破旧但不完全&#34;优雅&#34;。

(是的,那是Jurassic Park reference。)