我在我的C#应用程序中使用强类型数据集,我希望能够记录用户对行进行的任何更改。做这个的最好方式是什么?日志记录数据库行更改
0
A
回答
0
是否希望能够访问C#应用程序中的更改?或者这仅仅是为了记录/审计目的?您的强类型数据集是映射到SQL Server表的XSD数据集吗?
触发SQL服务器
在一个大的订货系统,我帮世邦魏理仕开发上,我们创造了额外的表来保存版本的数据。假设你有一张请求表。创建一个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数据集),但它是伟大的记录和审计和跟踪降低错误和历史。
其他选项
也许你有没有被持久性存储支持,如SQL服务器的XSD数据集,你仅仅使用在内存中的数据集。有很多其他设计模式和众所周知的构造可以在属性值发生变化时通知您。
另外,如果您使用的是XSD数据集,是因为您正在使用现有的代码库还是遗留应用程序?如果你正在做新的发展,我会摆脱它们。这是MS不再积极发展的一种老技术。如果你想留在当前版本的Visual Studio附带的MS堆栈中,你最好的选择是Linq to Sql或Entity Framework,这两者应该更容易处理,并且更灵活(例如,我不喜欢认为XSD数据集非常好地处理空值,并且它们不支持生成的类中的.NET可空类型)。
相关问题
- 1. 数据库日志记录
- 2. 数据库日志记录在日志记录过程
- 3. 对SQL数据库所做的日志记录更改
- 4. OpenERP日志记录到数据库
- 5. 数据库日志记录什么?
- 6. 从文件日志记录移动到数据库日志记录
- 7. 服务器日志记录 - 在数据库或日志文件?
- 8. 将日志更改为数据库
- 9. 动态更改日志记录级别
- 10. 更改日志记录级别服务
- 11. Scrapy日志记录级别更改
- 12. 在Mule中更改日志记录
- 13. 更改Spring RestTemplate日志记录
- 14. MAPI Outlook历史记录/更改日志
- 15. 在WPF数据绑定日志记录值更改为物业
- 16. JavaScript日志记录库(日志级别)
- 17. 没有日志库的日志记录
- 18. 数据库记录的事务日志(批量更新)
- 19. 在gcloud中将日志记录更改为弹性分段日志记录
- 20. Nlog数据库日志记录不插入行
- 21. nlog使用connectionStringName进行数据库日志记录
- 22. 使用AWS进行应用程序日志记录数据库
- 23. 使用Fluent界面进行数据库日志记录
- 24. 企业库日志记录
- 25. MySQL - 事务日志记录 - binlog?一般查询日志?登录到数据库?
- 26. 更改某些记录器的日志记录级别
- 27. 用ASP.NET消防并忘记数据库日志记录
- 28. 企业库日志记录写日志参数
- 29. 在测试执行期间更改日志记录级别
- 30. Java日志记录:它是日志还是日志记录器?
这是一个遗留系统,正在进行用户审计改造。它目前具有基于RowChanged事件的日志记录,但它有问题,并且不总是记录。我正在寻找更好的解决方案,以适应所有更改(访问可能不是必需的),只要我可以在应用程序中查看它就可以了。系统拥有自己的用户帐户,但使用系统用户帐户应该没问题。你喜欢多解释一下自己还是把我和某些东西联系起来? – Malfist 2010-07-01 20:45:05
触发器可能在你的情况下工作得很好。这个应用程序是否支持SQL Server?您甚至可以创建XSD数据集来映射单个[tableName] _changes表,因此您可以轻松地将更改的数据拖到您的应用程序,审计页面或任何其他位置。 – 2010-07-01 21:02:55