我有一个C#应用程序与SQL Server数据库。保存Excel行参考的最佳方法
该应用程序的一个功能是读取一个大的Excel文件并逐行进行,试图将ID
列与数据库中的ID
相匹配。一旦一行匹配,那么一些值将存储在一个表中。
后来用户可以更改该表上的值,但我想有一种方法来审核原始值。所以我想在表中创建一个XML列来存储整个Excel行的原始值。
我不需要对表执行审计跟踪,只是想将Excel引用行保留在我的SQL Server表中以备将来审计。
有什么建议吗?
我有一个C#应用程序与SQL Server数据库。保存Excel行参考的最佳方法
该应用程序的一个功能是读取一个大的Excel文件并逐行进行,试图将ID
列与数据库中的ID
相匹配。一旦一行匹配,那么一些值将存储在一个表中。
后来用户可以更改该表上的值,但我想有一种方法来审核原始值。所以我想在表中创建一个XML列来存储整个Excel行的原始值。
我不需要对表执行审计跟踪,只是想将Excel引用行保留在我的SQL Server表中以备将来审计。
有什么建议吗?
从长远来看,旧值的外部存储太难维护。
您只需在SQL表中为用户可更改的每个值添加一个“OriginalValue_ [fieldname]”列。填充表格时,请在[fieldname]和[OriginalValue_fieldname]中输入相同的值。当用户进行更改时,您只更改[fieldname],但旧值在表格中正确。
如果这不起作用(即您不允许进行架构更改),请使用ID字段和原始值创建另一个表。同样的方法 - 没有外部数据。
如果您拥有可管理数量的可更改字段,这是一个很好的答案。如果有太多可改变的字段是可行的,另一种方法是序列化你的Excel数据。 XML是这样做的一种方式,但我建议JSON.NET作为更轻量级的解决方案。 –
你以前只需要一个以前的版本吗?如果用户可以进行多次编辑,那么向表格本身添加“版本”列会更容易,并且在每次编辑时都会插入一个增加版本号的新行。或者建立一个单独的审计表,跟踪逐个字段的哪个值被更改。您提议的XML解决方案不是理想的IMO。 –
不,没有必要,因为它只能进行一次编辑。 – VAAA