Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一个持久性引擎可以为.Net处理复杂的用户分区数据?_.net_Orm_Persistence - Fatal编程技术网

是否有一个持久性引擎可以为.Net处理复杂的用户分区数据?

是否有一个持久性引擎可以为.Net处理复杂的用户分区数据?,.net,orm,persistence,.net,Orm,Persistence,假设我有这个模型: class Teacher { public string Name { get; set; } public IEnumerable<Student> Students { get; set; } } class Student { public string Name { get; set; } public IEnumerable<Teacher> Teachers { get; se

假设我有这个模型:

  class Teacher
  {
     public string Name { get; set; }
     public IEnumerable<Student> Students { get; set; }
  }

  class Student
  {
     public string Name { get; set; }
     public IEnumerable<Teacher> Teachers { get; set; }
  }
例如,返回“乔伊斯”、“乔纳斯”和“朱贾”,但不返回“史蒂夫”、“比尔”或“扎菲德”

现在假设老师“乔伊斯”有一群学生,他们的名字是“阿诺德”、“贝弗利”、“裘琳”、“杰罗姆”和“扎克”

是否有一个持久性引擎或or/M可以确保当我访问Joyce的学生时,它只会为我返回“Jolene”和“Jerome”,为名为“Annabelle”的用户返回“Arnold”

  • 我希望在整个存储引擎中都有这样的内容,因此,如果我以后创建一个包含学生和教师的教室对象,我希望这些集合只显示可访问的教师和学生
  • 确定可访问内容的算法可能非常复杂,并且依赖于存储中的其他数据
  • SQL、noSQL或其他选项都可以

在我看来,这不是持久性引擎/ORM的工作。ORM的工作是将关系世界映射到面向对象的世界,即从数据库映射到对象

您可以通过两种非常不同的方式执行此操作:

  • 为每个需要这样筛选的表创建一个视图。将ORM中的对象映射到视图而不是表。初始化数据库会话时,以某种方式使数据库知道当前用户
  • 作为业务逻辑的一部分,在应用程序中执行过滤

  • 我会选择选项2,除非它会导致大量不必要的数据被传输。

    在我看来,这不是持久性引擎/ORM的工作。ORM的工作是将关系世界映射到面向对象的世界,即从数据库映射到对象

    您可以通过两种非常不同的方式执行此操作:

  • 为每个需要这样筛选的表创建一个视图。将ORM中的对象映射到视图而不是表。初始化数据库会话时,以某种方式使数据库知道当前用户
  • 作为业务逻辑的一部分,在应用程序中执行过滤

  • 我会选择选项2,除非它会导致传输大量不必要的数据。

    你说:“通过某种算法,用户只能看到老师和学生的子集“。在这种情况下,用户是什么?使用用户名和密码登录到您的程序的人?正确。但我可以想象,其他场景也可能出现,你说:“通过某种算法,用户只能看到老师和学生的子集。”。在这种情况下,用户是什么?使用用户名和密码登录到您的程序的人?正确。但我可以想象其他场景也是可能的。我理解,但我当前应用程序中有很多关系,我正在寻找一种方法来简化此过程。我理解,但我当前应用程序中有很多关系,我正在寻找一种方法来简化此过程。
    var myViewableTeachers = persistenceStore.Teachers();