我必须在网站上记录不同的操作。例如,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操作。
可能有更灵活的方式?
对不起我的英语不好。
答案 0 :(得分:0)
1)创建更多的WriteEventLog重载,使控制器中的代码更简单;像WriteEventLog(用户)这样的东西,用于所有场合。
2)你使用什么样的ORM?例如,EntityFramework具有SavingChanges事件,您可以在其中检查所做的更改并记录它们(我已经完成了这项并且它运行良好)
3)看看PostSharp(http://www.postsharp.net/),它可能允许您仅使用属性将记录完全移出控制器。