Хотите ли вы получить доступ к изменениям из вашего приложения C #?Или это только для целей регистрации / аудита?Является ли ваш строго типизированный набор данных набором данных XSD, который сопоставляется с таблицей SQL Server?
Триггеры на сервере SQL
В большой системе заказов, которую я помог разработать в CB RichardЭллис, мы создали дополнительные таблицы для хранения версионных данных.Скажем, у вас есть таблица запросов.Создайте таблицу Request_changes.Затем вы настраиваете триггеры для INSERT и UPDATE следующим образом:
CREATE TRIGGER [dbo].[tr_Request_update]
ON [dbo].[Request]
FOR UPDATE
AS
SET NOCOUNT ON
INSERT INTO dbo.Request_changes
(
--ID, // taken care of by IDENTITY(1,1)
--LogDate, // uses default value of GetDate()
ChangeAction,
SQLServerUser,
RequestID,
UserIDContact,
etc
)
SELECT
'UPDATE',
system_user,
-- Request fields
RequestID,
UserIDContact,
etc
FROM
inserted
SET NOCOUNT OFF
GO
create TRIGGER [dbo].[tr_Request_insert]
ON [dbo].[Request]
FOR INSERT
AS
SET NOCOUNT ON
INSERT INTO dbo.Request_changes
(
--ID, // taken care of by IDENTITY(1,1)
--LogDate, // uses default value of GetDate()
ChangeAction,
SQLServerUser,
RequestID,
UserIDContact,
Title,
etc
)
SELECT
'INSERT',
system_user,
-- Request fields
RequestID,
UserIDContact,
etc
FROM
inserted
SET NOCOUNT OFF
GO
У вас не обязательно есть доступ к таблице _changes (если вы не сопоставляете это с другим набором данных XSD), но это отлично подходит для ведения журнала и аудитаи отслеживание ошибок и истории.
Другие параметры
Возможно, у вас есть набор данных XSD, который не поддерживается постоянным хранилищем, таким как сервер SQL, и вы 'просто использовать в памяти наборы данных.Существует множество других шаблонов проектирования и хорошо известных конструкций, которые уведомляют вас об изменении значений свойств.
Кроме того, если вы используете наборы данных XSD, это потому, что вы работаете с существующей кодовой базой или устаревшейприложение?Если вы занимаетесь новыми разработками, я бы держался от них подальше.Это старая технология, которую MS больше не развивает.Если вы хотите остаться в стеке MS, который поставляется с текущими версиями Visual Studio, вашими лучшими ставками будут Linq to Sql или Entity Framework, которые должны быть проще в обращении и более гибкими (например, я нене думаю, что наборы данных XSD очень хорошо обрабатывают нулевые значения, и они не поддерживают .NET сгенерированные типы в генерируемых классах).