表格行的许多版本((或历史记录))的最佳方法是什么

时间:2010-06-29 13:08:27

标签: c# .net sql-server logging

  

大家好,

     

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

     
      
  • 我打算在我的数据库中为我想要的每个表添加新表   支持记录到它然后处理   机智,我的DAL“EF在我的   接近“。但这会让我添加一个   DB和DAL都做了很多工作。

  •   
  • 所以我想知道是否有更简单的方法可以做到这一点?我不知道也许   类似“Log Provider”或SQL的东西   服务器触发器还是什么??

  •   
     

请支持我的建议,即使是关于支持的一般想法   日志记录。

     

...

EDIT1:

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

EDIT2:

对不起我的盲目和不明确的问题,但我只是意识到触发器只是做我想做的最好的方式

再次抱歉;}

3 个答案:

答案 0 :(得分:0)

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

我在前一段时间用过这种方法,试图在wcf服务失败的情况下故障回复到本地数据(缓存以前的请求)。

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

有关详细信息,请查看此link

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

如果有其他事情在我脑海中浮现,我会告诉你。

...问候

答案 1 :(得分:0)

我目前正在研究ASP.NET MVC应用程序。这样就可以将custom filters添加到操作方法中。这些属性类继承自System.Web.Mvc.ActionFilterAttribute

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

答案 2 :(得分:0)

我看到很多使用“触发器”为表格制作“历史记录”的例子。

他们将“插入,更新和删除”的触发器设置为他们想要的表。

我认为这非常好,特别是它不需要从我的应用程序中插入任何内容。

但我还是害怕Triggers影响效果!!!

那你的建议是什么?