gpt4 book ai didi

c# - 使用 Linq to SQL 存储库的可能性能注意事项

转载 作者:行者123 更新时间:2023-11-30 17:22:55 29 4
gpt4 key购买 nike

我有一个 ASP.NET MVC 应用程序,它使用 Linq to SQL 存储库进行与数据库的所有交互。

为了处理数据安全,我进行了修整以将数据过滤为仅包含用户有权访问的那些项目。这发生在几个地方:

  1. ListView 中的数据
  2. 菜单栏中的链接
  3. 左侧的 TreeView 包含指向内容的链接
  4. 基于角色的安全
  5. 一个特殊的安全属性,继承自 AuthorizeAttribute,在每个 Controller 方法上实现基于内容的授权。

这些地方中的每一个都实例化了一个存储库,它打开了一个 Linq to Sql DataContext 并访问了数据库。因此,根据我的统计,每个页面访问请求都会打开至少六个单独的 Linq to SQL 数据上下文。

我应该从性能角度考虑这个问题吗?如果是,可以采取哪些措施来缓解它?

最佳答案

在我几乎所有的 MVC 应用程序中,我都使用 BaseController。通常我会使用工厂在 BaseController 构造函数中创建 DataContext 的实例(单元测试通过模拟工厂实例,空构造函数导致创建工厂的默认实例)。虽然不是绝对必要的,但我确实在 BaseController 的 OnResultExecuted 中处理了创建的 DataContext。 “默认”数据上下文和工厂都作为 BaseController 类的 protected 属性公开,因此所有继承 Controller 都可以使用它们。

如果我需要在“默认”DataContext 之外进行某些操作,我只需使用上下文工厂根据需要创建一个新的独立实例。

我承认我这样做主要是为了方便和代码的易读性。我认为数据上下文本身足够轻量级,我不会获得太多性能。但是,我不再需要在每个操作方法中编写 using (var context = ... 代码。

关于c# - 使用 Linq to SQL 存储库的可能性能注意事项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2526376/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com