记录站点上的各种操作。灵活的方式

时间:2013-10-15 10:22:20

标签: c# asp.net-mvc

我必须在网站上记录不同的操作。例如,CRUD操作。这不是简单的消息:“实体已被保存”。针对不同实体的各种参数。例如,当更改用户时我必须保存ID,个人号码,对于商务旅行实体我必须保存出差的开始和结束日期。这是我更新用户的代码:

public UserController : Controller
{
   public ActionResult Update(...)
   {
       if (ModelState.IsValid)
       {
          ...
           var id =  _repository.SaveOrUpdate(user);
            _eventLogger.WriteEventLog(new EventLoggerData
                    {
                        EventType = EventLogType.Update,
                        ObjectType = ObjectType.User,
                        ObjectId = id,
                        EventData = _jsonObjectMapper.ToJson(new NumberedEventLoggerData
                        {                                
                            Number = number
                        })
                    });
       }
   }
}

一切正常。但代码:

 _eventLogger.WriteEventLog(new EventLoggerData
       {
             EventType = EventLogType.Update,
             ObjectType = ObjectType.User,
             ObjectId = id,
             EventData = _jsonObjectMapper.ToJson(new NumberedEventLoggerData
                 {
                    Number = number
                 })
        });

很大,这部分代码将不止一次重复。我有大约20个控制器,每个控制器都有CRUD操作。

可能有更灵活的方式?
对不起我的英语不好。

1 个答案:

答案 0 :(得分:0)

1)创建更多的WriteEventLog重载,使控制器中的代码更简单;像WriteEventLog(用户)这样的东西,用于所有场合。

2)你使用什么样的ORM?例如,EntityFramework具有SavingChanges事件,您可以在其中检查所做的更改并记录它们(我已经完成了这项并且它运行良好)

3)看看PostSharp(http://www.postsharp.net/),它可能允许您仅使用属性将记录完全移出控制器。