实体框架(6)是否有(内置)方式允许我只保留特定相关实体的最新N个相关元素?
E.g。如果我有一个名为'Post'的实体,它有0 .. *相关的'访客',我只想保留后者中的50个并自动删除(删除基础数据库中的访问者)旧的那个阈值到达了。这是可行的,如果是的话,怎么样?
答案 0 :(得分:0)
EF根本没有自动修剪功能。您必须构建一个每次执行的查询,以确定您是否超过了50个访问者限制。
您必须构建一个以“访问”51+为目标的查询,然后通过它们枚举来调用条目上的删除。遗憾的是,实体框架没有用于更新或删除的批处理功能,因此您必须对这些项目执行个别删除操作。假设你随着时间的推移建立了一个缓慢的访问者,这应该不是一个问题,但我强烈建议不这样做 - 如果你有很多访问者,你的表现将在厕所。< / p>
我建议查看一个通过ADO使用底层连接的Entity Framework扩展项目,以生成必要的删除和更新语句,这些语句可以一举正确地定位这些旧访问。每个项目都有自己的构建这些查询的指南,但是它们会在下面生成一个SQL调用来快速有效地完成工作。