实施数据库修订的最佳实践是什么?
假设我有一个名为Test的表和另一个名为Test_Rev的修订表。
假设我将跟踪Test的记录更改到Test_Rev表中。
在保存之前,我会得到修改后的实体,这样我就可以修改需要修改的表了。
我使用Producer-Consumer模式创建了一个单独的线程,然后将需要修改的实体传递给该线程。
使用访问者模式,我扩展了我的类的行为,以便我可以修改它们。
它工作得很好,但我需要知道最佳实践。
一位朋友告诉我,把修改作为我需要修改的表格的触发器。
顺便说一下,我使用的是VS2010、SQL Server2005、Entity Framework
发布于 2011-03-03 23:04:44
这取决于你对数据库中的逻辑是否满意。如果没有问题,可以使用DB触发器。如果您希望在应用程序中保留逻辑,请在执行base.SaveChanges之前覆盖派生的ObjectContext中的SaveChanges并运行修订(添加修订实体)。唯一的问题可能是使用自动生成的密钥“审核”新添加的实体-只有在调用base.SaveChanges之后才知道密钥。因此,在这种情况下,您必须在保存更改后审计添加的实体,并再次调用base.SaveChanges。
我不认为有任何理由为此有单独的线程-而且ObjectContext不是线程安全的。
发布于 2011-03-03 23:30:38
在数据库中,这称为审计,通常通过触发器来完成。在任何情况下都不要在应用程序中这样做,否则会错过更改,唯一合适的地方是在数据库中这样做。
https://stackoverflow.com/questions/5182348
复制相似问题