2016-08-21 4 views
1

У меня есть приложение C# с базой данных SQL Server.Лучший способ сохранить ссылку на строку Excel

Одной функциональностью приложения является чтение большого файла Excel и переход строки за строкой, которая пытается сопоставить столбец ID с ID в базе данных. Как только строка соответствует, то некоторые из значений сохраняются в таблице.

Позже пользователь может изменить значение в этой таблице, но я хотел бы иметь способ проверить исходные значения. Поэтому я думал о создании столбца XML в этой таблице, который сохранит исходные значения всей строки Excel.

Мне не нужно внедрять контрольную цепочку в таблицу, просто хочу сохранить контрольную строку Excel в моей таблице SQL Server для будущей проверки.

Любые советы?

+0

Вам нужна только одна предыдущая версия? Если пользователи могут делать несколько изменений, возможно, было бы проще добавить столбец «версия» в самую таблицу, и при каждом редактировании вы вставляете новую строку с добавленным номером версии. Или создайте отдельную таблицу аудита, которая отслеживает поле по полю, значения которого изменяются. Предлагаемое вами решение XML не является идеальным ИМО. –

+0

Нет, нет необходимости, потому что у него может быть только одно редактирование. – VAAA

ответ

1

Внешнее хранение старого значения слишком сложно поддерживать, в конечном счете.

Все, что вам нужно сделать, это добавить столбец «OriginalValue_ [fieldname]» в таблице SQL для каждого значения, которое пользователь может изменить. Когда вы заполняете таблицу, поместите то же значение в [fieldname] и [OriginalValue_fieldname]. Когда пользователь вносит изменения, вы изменяете только [fieldname], но старое значение находится прямо в таблице.

Если это не сработает (т. Е. Вам не разрешено изменять схему), создайте другую таблицу с полями идентификаторов и исходными значениями. Тот же подход - никаких внешних данных.

+1

Это хороший ответ, если у вас есть управляемое количество сменных полей. Если слишком много измененных полей для практического применения, альтернативой будет сериализация данных Excel. XML - один из способов сделать это, но я бы рекомендовал JSON.NET как более легкое решение. –

Смежные вопросы