2014-02-16 45 views
0

实体框架(6)是否存在(内置)方式,使我只能保留特定相关实体的最新N个相关元素?只保留最新的50个相关实体并使用实体框架自动更新旧实体?

E.g.如果我有一个名为“发布”的实体具有0 .. *相关的​​“访问者”,我希望只保留后者中的50个,并在该阈值后自动摆脱(从底层数据库中删除访问者)较旧的实体到达了。这是可行的,如果是这样,如何?

回答

0

EF中根本没有自动修剪功能。您将不得不构建一个每次执行的查询,以确定您是否已超过50个访问者限制。

你必须建立一个查询,目标'访问'51+,然后枚举通过他们调用条目的删除。不幸的是,Entity Framework没有更新或删除的批处理功能,因此您必须对这些项目执行个人删除。假设你随着时间的推移建立了一个缓慢的游客数量,这应该不是问题,但我强烈建议不要这样做 - 如果你有很多游客,你的表现将在厕所中。

我会建议看一个实体框架扩展项目,它通过ADO使用底层连接来产生必要的删除和更新语句,以便能够一次性正确定位这些较旧的访问。每个项目都有自己的指导来构建这些查询,但它们会在下面生成一个SQL调用,以便快速高效地完成工作。

+0

谢谢@invenetix! –