【问题标题】:What is the best way to make many versions ((Or history)) of Table's rows制作表格行的多个版本((或历史))的最佳方法是什么
【发布时间】:2011-03-09 15:01:51
【问题描述】:

大家好,

我正在尝试申请 支持记录,但我很新 这种方法。

  • 我打算为我想要的每个表添加新表到我的数据库 支持登录到它然后处理 用我的 DAL “EF 在我的 方法”。但这会让我添加一个 DB 和 DAL 的工作量很大。

  • 所以我想知道是否有更简单的方法可以做到这一点??我不知道也许 类似于“日志提供程序”或 SQL 服务器触发器什么的??

请为我提供您的建议,即使是关于支持的一般想法 记录。

...

编辑1:

例如,假设我有“Persons”表和“Person”模型,我想支持记录到我的人表 所以我想知道某些人数据在特定时间发生了什么以及发生了什么。我希望这一点很清楚!。

.

编辑2:

抱歉,我的问题是盲目且不清楚的,但我只是意识到触发器是做我想做的事情的最佳方式

再次抱歉;}

【问题讨论】:

  • 抱歉我的问题不太清楚,我无法确定哪个答案应该是正确的:(

标签: c# .net sql-server logging


【解决方案1】:

现在想到的就是使用拦截(例如使用 Unity 拦截实例或类型)。

前段时间我曾使用此方法在 wcf 服务失败时尝试故障回复到本地数据(从以前的请求中缓存)。

所以我猜你可以拦截对 DAL 类的调用并尝试在管道的前/后事件中记录信息。

有关更多信息,您可以查看此link

另一种方法可能是通过使用 IoC 容器(再次使用 Unity,如果您使用 .NET 4.0 则为 MEF)在您的 DAL 类(希望有一个基础 DAL 类)中注入一个记录器类。

如果我有其他想法,我会告诉你的。

问候...

【讨论】:

    【解决方案2】:

    我目前正在开发一个 ASP.NET MVC 应用程序。这提供了将custom filters 添加到操作方法的能力。这些是继承自System.Web.Mvc.ActionFilterAttribute 的属性类。

    我只是用“[Log(LogLevel.High)]”之类的东西来装饰我希望记录的任何操作方法(或所有方法的控制器类)。提供此功能的LogAttribute 类依赖于我的接口ILoggingProvider,其中包含Write 方法(具体实现日志到数据库)。我在LogAttribute 类中处理OnActionExecuted 事件,并使用eventargs 构造数据以传递给Write 方法。如果您也想记录结果,也可以记录OnResultExecuted 事件。

    【讨论】:

      【解决方案3】:

      我看到了许多使用“触发器”为表格创建某种“历史”的示例。

      他们为他们想要的表创建了“插入、更新和删除”触发器。

      我认为这非常好,尤其是它不需要我的应用程序进行任何干预。

      但我还是害怕触发器影响性能!!!

      那么你的建议是什么??

      【讨论】:

        猜你喜欢
        • 2011-06-16
        • 2011-04-24
        • 2018-06-16
        • 2022-11-10
        • 2023-03-28
        • 2020-01-16
        • 2019-04-15
        • 1970-01-01
        • 2015-02-03
        相关资源
        最近更新 更多