2016-08-21 34 views
1

我有一个C#应用程序与SQL Server数据库。保存Excel行参考的最佳方法

该应用程序的一个功能是读取一个大的Excel文件并逐行进行,试图将ID列与数据库中的ID相匹配。一旦一行匹配,那么一些值将存储在一个表中。

后来用户可以更改该表上的值,但我想有一种方法来审核原始值​​。所以我想在表中创建一个XML列来存储整个Excel行的原始值。

我不需要对表执行审计跟踪,只是想将Excel引用行保留在我的SQL Server表中以备将来审计。

有什么建议吗?

+0

你以前只需要一个以前的版本吗?如果用户可以进行多次编辑,那么向表格本身添加“版本”列会更容易,并且在每次编辑时都会插入一个增加版本号的新行。或者建立一个单独的审计表,跟踪逐个字段的哪个值被更改。您提议的XML解决方案不是理想的IMO。 –

+0

不,没有必要,因为它只能进行一次编辑。 – VAAA

回答

1

从长远来看,旧值的外部存储太难维护。

您只需在SQL表中为用户可更改的每个值添加一个“OriginalValue_ [fieldname]”列。填充表格时,请在[fieldname]和[OriginalValue_fieldname]中输入相同的值。当用户进行更改时,您只更改[fieldname],但旧值在表格中正确。

如果这不起作用(即您不允许进行架构更改),请使用ID字段和原始值创建另一个表。同样的方法 - 没有外部数据。

+1

如果您拥有可管理数量的可更改字段,这是一个很好的答案。如果有太多可改变的字段是可行的,另一种方法是序列化你的Excel数据。 XML是这样做的一种方式,但我建议JSON.NET作为更轻量级的解决方案。 –