首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC3事务计数器

MVC3事务计数器
EN

Stack Overflow用户
提问于 2012-03-29 23:21:14
回答 2查看 177关注 0票数 1

我想要计算从数据库(SQL Server)检索某些报告的事务数。我使用EF4.1进行数据库交互,使用MVC3进行客户端交互。

谁能建议最好的方式做和放置(在控制器或仓库服务等)。

我想将用户限制在每小时最多100个事务。超过此限制后,我将锁定用户并注销。提前感谢!!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-29 23:32:25

这显然是业务逻辑,因此“操作”(决策)需要在您的业务逻辑层。

在数据库中,保留一个包含每天消耗配额的表,并在用户每次执行计数操作(如检索特定报告或写入数据库)时更新该表。也就是说,您的业务逻辑包含用于更新每个此类操作的消耗配额计数器的指令。

在您的业务层添加验证逻辑,读取用户的消耗配额,并仅在未达到该用户的每日配额时进行验证(即,允许)。

如果有必要,每天清理配额,但您可能希望保留它,以便进行会计处理。

票数 1
EN

Stack Overflow用户

发布于 2012-03-29 23:31:53

我可能会查看可以在MvcApplication类中全局(跨所有控制器)应用的ActionFilterAttribute,即RegisterGlobalFilters方法。类似于:

代码语言:javascript
复制
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

代码语言:javascript
复制
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new HandlerErrorAttribute());

    // add this line:
    filters.Add(new FilterTrafficAttribute());
}

然后你就可以确保它适用于所有的呼叫,并且有很强的处理能力。您可能会对ActionFilterAttribute中的其他覆盖感兴趣

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9928443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档