我最近开始使用EF4,我注意到性能方面的一些瓶颈,我发现这令人担忧。我在下面使用的表中不超过400行,但使用系统诊断秒表作为计时器需要4秒,以执行下面的两个语句。
我只是在寻找关于我是否以正确的方式使用框架的意见,因为查询性能比直接使用存储过程时要慢得多。
所以,我已按如下方式构建了所有EF查询。首先,我以匿名类型返回我需要使用的字段,如下所示:
using (var entities = new MyEntities())
{
var dbRecords = (from record in entities.MasterRecords
select new
{
ID = record.Id,
Name = record.Name,
AddressLineOne = record.AddressLineOne,
TransactionID = record.TransactionId
}).ToList();
接下来,我在业务对象类中调用静态方法来创建对象。请注意,下面代码中的存储库调用也会调用EF。
var output = from dbrecord in dbRecords
select MasterData.CreateNewRecord(
this.recordRepository.FindRecords(dbrecord.ID),
dbrecord.Name,
dbrecord.AddressLineOne,
dbrecord.TransactionID
).ToList();
}
我是否以正确的方式解决这个问题?