【发布时间】:2011-06-26 06:38:48
【问题描述】:
我同时使用 Elmah 和 Log4Net(带有 ADONetAppender),它们都很棒。但是,我注意到两者都有一个表 ID 键(递增数字),当我清除它们的日志时,它不会重置为零。他们从哪里得到这个 ID 值?另外,log4net 列是否有任何理由不使用主键作为 ID 值,或者如果我添加一个主键会遇到问题?
【问题讨论】:
标签: c# asp.net sql log4net elmah
我同时使用 Elmah 和 Log4Net(带有 ADONetAppender),它们都很棒。但是,我注意到两者都有一个表 ID 键(递增数字),当我清除它们的日志时,它不会重置为零。他们从哪里得到这个 ID 值?另外,log4net 列是否有任何理由不使用主键作为 ID 值,或者如果我添加一个主键会遇到问题?
【问题讨论】:
标签: c# asp.net sql log4net elmah
我怀疑这是数据库中ID 字段上的auto increment 指令,因为当您删除条目时,该值不会重置为零,只有在被截断时才会重置(请纠正我,我不确定它)。尝试直接重置数据库中的表,而不是使用记录器基础架构。
【讨论】:
delete from table,它只是清除整个表,运行时间是O(n)。我不太确定 truncate 究竟是如何工作的,但我认为您可以将其想象为删除整个表而不是删除所有记录,然后重新创建它。
如果您使用的是 Microsoft SQL Server,则可以使用 DBCC CHECKIDENT 语句重置 IDENTITY 列种子,如下所示:
DBCC CHECKIDENT ( table_name, RESEED, new_reseed_value )
例如,要将ELMAH_Error 表的 IDENTITY 列重置为值 1,您可以使用:
DBCC CHECKIDENT ( ELMAH_Error, RESEED, 1 )
编程愉快!
【讨论】: