我想计算从数据库(SQL Server)检索某些报告的事务数。我使用EF4.1进行数据库交互,使用MVC3进行客户端访问。
任何人都可以建议最好的方式来做和放置(在控制器或重置服务等)。
我想将用户限制为每小时最多100笔交易。在此限制之后,我将锁定用户并注销。在此先感谢!!
答案 0 :(得分:1)
我可能会在ActionFilterAttribute
类MvcApplication
方法中查看可以全局(跨所有控制器)应用的RegisterGlobalFilters
。类似的东西:
public class FilterTrafficAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
// Log and track visitor count for the hour here, and decide if they
// should proceed on or not.
// You can also change the ActionResult of the request by altering the
// filterContext.Result.
}
}
然后在MvcApplication
:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandlerErrorAttribute());
// add this line:
filters.Add(new FilterTrafficAttribute());
}
然后你确保它适用于所有通话,并具有很多处理能力。您可能会对ActionFilterAttribute
答案 1 :(得分:1)
这显然是业务逻辑,因此“行动”(决策)需要在您的业务逻辑层中。
在数据库中,保留每天消耗配额的表,并在每次用户执行计数操作(例如检索特定报告或写入数据库)时更新该表。也就是说,您的业务逻辑包含更新每个此类操作的消耗配额计数器的说明。
在您的业务层中添加验证逻辑,用于读取用户的已消耗配额,并且仅在尚未达到该用户的每日配额时验证(即允许)。
如有必要,每天都会清理配额,但您可能希望将其保留用于会计目的。