首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >日志数据库行变更

日志数据库行变更
EN

Stack Overflow用户
提问于 2010-07-02 02:59:03
回答 1查看 310关注 0票数 0

我在C#应用程序中使用的是强类型数据集,我希望能够记录用户对行所做的任何更改。做这件事最好的方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2010-07-02 04:29:11

是否希望能够从C#应用程序访问更改?或者这仅仅是出于日志记录/审计的目的?您的强类型数据集是否是映射到SQL Server表的XSD数据集?

SQL server上的触发器。

在我在CB Richard Ellis帮助开发的一个大型排序系统中,我们创建了额外的表来保存版本化数据。假设你有一个请求表。创建一个Request_changes表。然后按如下方式为INSERT和UPDATE设置触发器:

代码语言:javascript
复制
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

您不一定有权访问XSD表(除非将其映射到另一个_changes数据集),但它对于日志记录、审计和跟踪but和历史记录非常有用。

Other options

也许您有一个XSD数据集,该数据集不受持久性存储(如SQL server )的支持,而您只是在内存中使用数据集。当属性值发生更改时,还有许多其他设计模式和众所周知的构造可以通知您。

另外,如果您使用的是XSD数据集,是因为您使用的是现有代码库还是遗留应用程序?如果你在做新的开发,我会避开他们。这是一项微软不再积极开发的老技术。如果您想继续使用Visual Studio当前版本附带的MS堆栈,那么最好的选择是Linq to Sql或Entity Framework,这两者都应该更容易处理,而且更灵活(例如,我认为XSD数据集不能很好地处理空值,而且它们不支持生成的类中的.NET可空类型)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3160834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档