我们正在使用Entity Framework 4.0,我们遇到的情况是使用类似于下面的代码将记录添加到数据库中,并且它已超时。我们将实体框架调用换成了对存储过程的ADO.Net调用,并在15秒内完成。有任何想法吗?
任何将此代码包含在“使用”中的机会都可能导致此问题?
ENTITY-TABLENAME d = new ENTITY-TABLENAME();
d.COLUMN1 = batchNo;
d.COLUMN2 = lineNo;
d.COLUMN3 = "N";
d.COLUMN4 = "N";
d.COLUMN5 = year;
d.COLUMN6 = month;
d.COLUMN7 = distributorPA;
d.COLUMN8 = dealerPA;
d.COLUMN9 = dealerPA;
d.COLUMN10 = fordPartNo;
d.COLUMN11 = quantity;
d.COLUMN12 = "0";
d.COLUMN13 = 0;
d.COLUMN14 = 0;
d.COLUMN15 = 0;
d.COLUMN16 = "";
d.COLUMN17 = User.Identity.Name;
d.COLUMN18 = DateTime.Now;
d.COLUMN19 = User.Identity.Name;
d.COLUMN20= DateTime.Now;
db.ENTITY-TABLENAME.Add(d);
答案 0 :(得分:1)
此查询中没有任何疑问。我无法相信一个不使用关系的查询,没有引用,只包括一个表可能导致超时。你确定没有涉及复杂的关系吗?没有外键?没有引用其他表实体?
我还要说,无论你使用存储过程还是实体框架,执行都需要15秒才会太慢!也许您的SQL Server或特定计算机有问题。您应该使用respective tools等Monitor Resource Usage tool检查其资源可用性。
无论如何,没有关于表现的假设是安全的。我会使用像SQL Server Profiler这样的探查器来查看转换LINQ to Entities查询的实际SQL查询。我相信它可以提供有用的见解。
希望我帮忙!