基于某些东西从实体框架查询中删除数据

时间:2014-10-21 14:55:31

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

我的应用程序有一些特权信息,某些用户不能看到的费用。该应用程序使用WebAPI OData将数据下载到AngularJS单页面应用程序中,然后隐藏或显示数据。

显然,这并不理想,任何精通技术的用户都可以检查网络流量,然后查看费用。

在它进入我的BL /服务层之前,有没有办法从源中的实体框架查询中删除这些数据?

我认为投影可能会有所帮助,但它会破坏.Include功能,这将破坏我的OData $扩展功能。我目前没有先使用代码,但如果有帮助,我愿意转换代码。

我担心我最好的选择是放弃OData并在BL或Web服务边界自行删除数据。

由于

1 个答案:

答案 0 :(得分:0)

您可以尝试使用ODataConventionModelBuilder.Ignore。 在数据库上下文中,您可以执行类似

的操作
protected override void OnModelCreating(ODataConventionModelBuilder modelBuilder)
{
       modelBuilder.Entity<Customer>()
            .Ignore(e => e.Address);
}

通过这种方式,属性地址不会显示在元数据中,并且在您查询时不会显示... / Customers

Stackoverflow上的相关帖子How to prevent ODataConventionModelBuilder to automatically expose all derived types' metadata?