Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET-高效的数据库实体集合?_.net_Asp.net Mvc_Vb.net_Collections_Performance - Fatal编程技术网

.NET-高效的数据库实体集合?

.NET-高效的数据库实体集合?,.net,asp.net-mvc,vb.net,collections,performance,.net,Asp.net Mvc,Vb.net,Collections,Performance,在3d party ORM框架中,我有一个Page类和一个PageCollection类。我可以根据参数(pageid、parentid、url等)填充页面集合(SQL查询)。但是我需要在ASP.NETMVC网站上多次使用这些数据(站点地图、身份验证),因此我选择1次加载所有页面并引用该(全局)集合 GlobalClass.Pages //is PageCollection containing all pages 我现在已经创建了一些函数,它们根据前面提到的参数(pageid、parenti

在3d party ORM框架中,我有一个
Page
类和一个
PageCollection
类。我可以根据参数(pageid、parentid、url等)填充页面集合(SQL查询)。但是我需要在ASP.NETMVC网站上多次使用这些数据(站点地图、身份验证),因此我选择1次加载所有页面并引用该(全局)集合

GlobalClass.Pages //is PageCollection containing all pages
我现在已经创建了一些函数,它们根据前面提到的参数(pageid、parentid、url等)返回一个临时子集合或单个实体

然而,这个网站变得非常缓慢

这里怎么走?
  • 缓存子集合(
    GetByParent()
  • 为集合创建内部哈希查找表
  • 还有什么…


我要做的第一件事是确定为什么你的网站很慢。如果我每次都有一块钱,我认为这是业绩不佳的原因,结果是其他原因


在整个代码中设置跟踪点,并找出您在哪里花费时间。您当前的方法可能很好,但在一些实现细节上遇到了问题。只修复已知的故障。

是的,一些非常重要的信息没有给出:)到底什么是慢的?GetBy方法是否比您预期的慢?如果GetBy方法命中数据库而不是全局集合,它们是否会更快?有趣的是,我正在查询每个页面实体中的角色。也许这需要先做一些工作:)我开始使用linq,这很有帮助。谢谢
GlobalClass.Pages.GetByPageId(id) //returns single page entity
GlobalClass.Pages.GetByParentId(parentid) //returns subcollection
Namespace BLL
Public Class PageCollection
    Inherits CustomCollectionBase
    
    Public Sub New()

    End Sub

    
    Public Sub LoadByParent(ByVal PagParent As Integer)
        If PagParent = 0 Then
            Me.whereAdd('parent IS NULL')
        Else
            Me.whereAdd('parent = ' & PagParent.ToString())
        End If

        Me.Load(Me.data)
    End Sub

    Public Function GetBySiteMapNode(ByVal node As SiteMapNode) As BLL.Page
        Return Me.GetByUrl(node.Url)
    End Function

    Public Function GetById(ByVal id As Integer) As BLL.Page
        For Each p In Me
            If p.PagAutoKey = id Then Return p
        Next
        Return Nothing
    End Function

    Public Function GetByUrl(ByVal url As String) As BLL.Page
        For Each p In Me
            If p.Url = url Then Return p
        Next
        Return Nothing
    End Function

    Public Function GetByParent(ByVal parent As Integer) As BLL.PageCollection
        Dim pc As New PageCollection
        For Each p In Me
            If p.PagParent = parent Then pc.Add(p)
        Next
        Return pc
    End Function
End Class
End Namespace