我正在使用ASP.net Web API获取简单的REST API。我正在使用Linq作为我的数据访问层,并为每个api调用新建了一个linq datacontext。但是为每次调用创建一个新的数据上下文似乎有点资源,所以我开始考虑将datacontext移动到单个应用程序级变量,该变量将在global.asax中实例化。
每个api函数只是在一个表上执行简单的CRUD操作。我知道如果采用这种方法,会出现一些并发问题。但实际上所有表都由用户分区,因此2个不同的用户无法更新或删除任何表上的相同行。此外,因为它是一个api我在每次更改后调用datacontext.submitchange()所以任何一个用户都可以同时更新同一行。
除了并发问题之外,还有其他问题需要在全局级别管理datacontext而不是在每次api调用时实例化吗?是否还有其他方法可以实现应用程序级实例化的性能/资源优势?
答案 0 :(得分:0)
我相信您可以将数据上下文定义为全局变量。如果你完全确定将来你没有问题,那么你就可以做到这一点。
但是,在您进行此更改之前,我建议您对应用程序进行基准测试,以确切了解您的资源是什么?您是否完全确定您的数据背景是否有罪?如果其他东西吃掉你的资源怎么办?
您应首先确定问题,然后才开始优化。