实体框架6过滤您访问的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实体框架6过滤您访问的数据相关的知识,希望对你有一定的参考价值。

我有一个访问用户和他们的一些权限的应用程序。这些存储在其他应用程序使用的表中,因此更改与其他应用程序相关的任何内容将是灾难性的。例如,如果我说“用户X的权限是我的应用程序上的R / W”我不希望用户X的其他应用程序权限消失。

有没有办法以这种方式过滤事物?

伪数据

  • 权限1:UserX,ReadRight,Application
  • 权限2:UserY,WriteRight,Application
  • 权限3:UserX,WriteRight,Application
  • 权限4:用户,读写,应用程序

应用程序A,伪代码

UserX.Permission = [ { WriteRight, ApplicationA }, { WriteRight, ApplicationA } ]
Save UserX

产生的伪数据

  • 权限1:UserX,ReadRight,ApplicationA - 酷,我的意思是
  • 权限5:UserX,WriteRight,ApplicationA - 酷,我的意思是
  • 权限2:UserY,WriteRight,Application
  • 权限3:UserX,WriteRight,ApplicationB - 糟糕!我不是故意删除它。
  • 权限4:UserX,ReadRight,ApplicationB - 糟糕!我不是故意删除它。

注意:

Application / User / Permission的业务性质不相关,也可能是Tree / Farmer / Fruit(如果我设置了树的果实数量,它有5个,这并不意味着Farmer只有5个水果)

答案

免责声明:我是EntityFramework.DynamicFilters的所有者

此库允许您过滤特定用户的数据。

modelBuilder.Filter("NotesForCompany", (Note n, int orgID) => n.Person.OrganizationID==orgID, (MyContext ctx) => ctx.CurrentOrganizationID);
modelBuilder.EnableFilter("UserOrg", (MyContext ctx) => !ctx.UserIsAdmin);

以上是关于实体框架6过滤您访问的数据的主要内容,如果未能解决你的问题,请参考以下文章

实体框架6过滤子对象

实体框架6代码首先用oracle更新实体

在实体框架中加载具有过滤条件的子对象记录

实体框架6不适用于Temporal表

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段

ADO.NET 实体框架 - 带有实体框架 6 的 Oracle