Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.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
C# 关于最小化SQL server调用_C#_Asp.net_Sql Server - Fatal编程技术网

C# 关于最小化SQL server调用

C# 关于最小化SQL server调用,c#,asp.net,sql-server,C#,Asp.net,Sql Server,所以我有这个页面,里面有很多方法。一些方法是获取用户电子邮件。一个是绑定转发器,另一个是更改密码等等。现在,在每个方法中都会调用一些存储过程,并在数据库中进行更改 因此,我的页面的页面加载事件如下所示:- protected void Page_Load(object sender, EventArgs e) { BindCon(); getemail(); getadd();

所以我有这个页面,里面有很多方法。一些方法是获取用户电子邮件。一个是绑定转发器,另一个是更改密码等等。现在,在每个方法中都会调用一些存储过程,并在数据库中进行更改

因此,我的页面的页面加载事件如下所示:-

    protected void Page_Load(object sender, EventArgs e)
    {

                BindCon();
                getemail();
                getadd();
                BindRepeater();

                getpic();


}

现在,SQL server被反复调用,这将影响性能。我想我可以创建一个存储过程,它将一次性执行上述方法中使用的所有存储过程,而不是像上面那样反复调用SQL server。现在我如何创建存储的P并在代码中使用它??需要想法…thnx

您可以运行SQL分析器,分析重复的内容,并减少通常不需要的内容。由于您使用的是ASP.Net,您可以根据需要利用会话、应用程序和缓存等状态来存储数据。

如果您要从表中的一行(例如帐户、电子邮件、年龄)中单独获取所有这些内容,您肯定应该在一行中一次性获取它们,而不是调用每一列

此外,如果您从单独的表中获取内容,这些表可以与联接组合成一行(帐户、收件箱中的邮件数、帐户余额),那么您可以在SP中这样做并获取一行

如果这些是真正独立的实体(一行表示用户帐户,多行表示权限),您还可以从存储的进程返回多个结果集,并使用ADO.NET功能获取下一个结果集

请注意,在某些情况下,对于运行时间较长的SP,最好使用async ADO.NET并行调用所有SP,因为单个SP将有效地强制操作以串行方式运行


在数据库跨越子系统的任何情况下,都可能会产生维护问题,因为您可能会创建一个跨越实体边界的SP,并且会受到任何子系统更改的影响。在可能的情况下,在每个实体域中使用一个横切SP调用单独的SP,以尽可能地将其解耦。即使由于将来的更改而需要更改,这至少应该清楚地表明依赖关系。

答案取决于您当前如何进行db调用<代码>SqlCommand?Linq到实体?共享部分代码。已更新..请帮助..暂时搁置,如果您对性能敏感,您可能需要重新考虑在存储过程名称上使用“sp_”前缀。