问题是这么出现的
1.进入(或刷新)首页(通过WCF对数据库有多次访问)
2.进入(或刷新)数据编辑页面,点击按钮(向数据库更新几条数据,每次更新一条,分多次更新)。
第2步中的更新就会变慢。我在SQL中监视执行的时间,从开始更新到结束用时好几秒,接下来所有其它操作一直慢,除非回收应用程序池。回收后如果不做第1步,进入第2步,就会变快(1秒内全部完成)
如果不通过WCF,直接通过类去做也不会有任何问题。请问这是啥原因?
数据访问用的EF,unitofwork模式,unity 做的IOC
你的问题很复杂,很显然你的程序有问题,建议你用 CLR Profiler 把 API 的调用时间都统计出来,或者找个人帮你看下你的代码。
“从开始更新到结束用时好几秒”时执行的SQL语句是什么?
SQL 很简单,这个没有问题,我只是举个例子,其它地方也会慢,如果不通过WCF,就不会出现变慢的情况,
@此刻天涯: 如果SQL语句执行要好几秒,那这个SQL语句本身就有问题,与WCF无关。
SQL执行是很快的,我是分开执行多条,总共的花费时间,两条SQL的间隔较长
如果不通过WCF,直接调用类里面的方法,就不会花费较长时间,
@此刻天涯: “直接调用类里面的方法”也是用的EF?
@dudu: 对啊方法是一样的
@此刻天涯: 建议一下WCF部分的代码
@dudu:
public int SaveAssessmentEmp(Guid mainId, string selfEvaluation, string deptSuggest, string transferIdea)
{
var item = repository.GetData(mainId);
if (item != null)
{
item.SelfEvaluation = selfEvaluation;
item.DeptSuggest = deptSuggest;
item.TransferIdea = transferIdea;
return repository.Update(item);
}
else return 0;
}
上面是更新方法,我的问题不是发生在某一个方法上面,而是整个系统
@dudu: 有时间的话远程帮我看下?
@此刻天涯: 你要去缩小问题的范围
请问你得问题解决了吗? 我也遇到类似的问题 程序和数据库在同一台机器的话 速度很快 如果分开放 每次调用都得4秒左右
用的 wcf ef5