我将使用实体框架代码优先方法,发现仅获取 350 条左右记录的查询大约需要 8 秒。我怎样才能加快速度?这个 Universe 或实体框架是否运行缓慢?
实体框架 5.0 U2.Data.Client 1.2.1 .Net 框架 4.5.1
RAMContext 看起来像这样:
public class RAMContext : DbContext
{
public RAMContext() { }
public DbSet<Policy> Policies { get; set; }
}
这是获取实体的代码:
List<Policy> policies = null;
Database.SetInitializer<RAMContext>(null);
using (RAMContext context = new RAMContext())
{
policies = (from p in context.Policies
where p.AGENT_NO == id
select p).ToList();
}
这是连接字符串:
<add name="RAMContext" connectionString="Database=<account>;UserID=<userid>;Password=<pwd>;Server=<server>;Pooling=false;ServerType=universe;ConnectTimeout=360;SleepAfterClose=300;PersistSecurityInfo=true" providerName="U2.Data.Client" />
AGENT_NO 已编入索引,并且从 TCL 直接在数据库上运行的相同查询几乎立即完成。
编辑 在 Rajan 发表评论后,我尝试了以下操作:
policies = (from p in context.Policies
where p.AGENT_NO == id
select new PolicyModel
{
//Type = PolicyModel.Types)StringValue.GetEnumValueByStringValue(typeof(PolicyModel.Types), p.TYPE),
Insured = p.INSURED,
City = p.CITY,
State = p.STATE,
CancelDate = p.CANC_DT
//IsNew = PickHelper.PickYNNullToBool(p.NEW_RENEW_FLG)
});
我现在可以在 3 秒内做出这个选择,它出现了。我还在 AGENT_NO 上重建了索引,我相信这有很大帮助。
尝试您的第二个建议,我得到以下异常:
U2.Data.Client.dll 中出现“System.IndexOutOfRangeException”类型的异常,但未在用户代码中处理
附加信息:
此 U2ParameterCollection 的索引 -1 无效,Count=0。