代码之家  ›  专栏  ›  技术社区  ›  AdamSane

LLBLGen:我怎样才能删除条目

  •  5
  • AdamSane  · 技术社区  · 18 年前

    我继承了一个使用LLBLGen Pro作为DB层的项目。DB模型要求在删除条目时设置一个标志(DeletedDate设置为当前时间)。最后一个程序员忽略了这个要求,在整个应用程序中使用了定期删除。

    3 回复  |  直到 18 年前
        1
  •  4
  •   Jamie Ide    18 年前

    我在SQLServer2005中实现了这一点,对任何软删除表使用了INSTEADOF触发器进行删除。触发器设置删除标志并执行清理。此解决方案的优点在于,它能够正确处理任何访问数据库的系统发出的删除。我知道在SQL Server中有一个与Oracle相当的版本,而不是相对较新的版本。

    这个解决方案还可以很好地与我们的O/R映射器配合使用——我创建了过滤掉软删除记录并映射这些记录的视图。这些视图也用于所有报告。

        2
  •  2
  •   Slav    18 年前

        3
  •  0
  •   Matt    17 年前

    这取决于您使用的是自助服务还是适配器。如果需要,您需要修改模板,以便它为您设置标志,而不是删除实体。

    如果是adapter,则可以从DataAccessAdapter继承并重写delete方法来为您设置标志,而不是删除实体。

    对于性能来说,这通常是一个糟糕的解决方案,因为每个查询都需要过滤掉“已删除”的实体,而且因为“已删除”列的选择率不会很高(所有“未删除”的记录都是空的,我猜这将是大多数记录)为它编制索引并不会给您带来很多好处—您最终会得到大量的表扫描。

    推荐文章