1

我将使用实体框架代码优先方法,发现仅获取 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。

4

1 回答 1

0

你能试试下面的代码吗?此代码不使用实体框架 (LINQ to Entity)。我们想看看 UniVerse 在没有实体框架的情况下是如何表现的。

您需要执行以下操作:

  • 创建 C# 控制台应用程序
  • 将 Program.cs 文件的内容替换为以下代码
  • 右键单击->添加引用-> C:\Program Files (x86)\Rocket Software\U2 Toolkit for .NET\U2 Database Provider\bin.NETFramework\v4.0\U2.Data.Client.dll
  • 更改连接字符串
  • 更改 SQL 语法
  • 运行程序。请参见下面的屏幕截图。它显示“以秒为单位的时间”。

代码



    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using U2.Data.Client;
    using System.Data;
    using System.Diagnostics;

    namespace DataAdapter
    {
        class Program
        {
            static void Main(string[] args)
            {
                try
                {
                    Console.WriteLine("start.........................");
                    Stopwatch sw = new Stopwatch();
                    sw.Start();

                    U2ConnectionStringBuilder conn_str = new U2ConnectionStringBuilder();
                    conn_str.UserID = "administrator";
                    conn_str.Password = "pass";
                    conn_str.Server = "localhost";
                    conn_str.Database = "XDEMO";
                    conn_str.ServerType = "UNIVERSE";
                    conn_str.Pooling = false;
                    string s = conn_str.ToString();
                    U2Connection con = new U2Connection();
                    con.ConnectionString = s;

                    con.Open();
                    Console.WriteLine("Connected...");
                    U2Command cmd = con.CreateCommand();
                    cmd.CommandText = "SELECT * FROM PRODUCTS";
                    DataSet ds = new DataSet();
                    U2DataAdapter da = new U2DataAdapter(cmd);
                    da.Fill(ds);

                    sw.Stop();

                    TimeSpan elapsed = sw.Elapsed;
                    string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", elapsed.Hours, elapsed.Minutes, elapsed.Seconds, elapsed.Milliseconds / 10);
                    int nSec = elapsed.Seconds;
                    con.Close();
                    Console.WriteLine("Time Taken in seconds:" + elapsedTime);
                    Console.WriteLine("End........................... ");

                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);

                }
                finally
                {
                    Console.WriteLine("Enter to exit:");
                    string line = Console.ReadLine();
                }
            }
        }
    }


在此处输入图像描述

于 2014-06-05T04:22:40.960 回答