首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架6和Async()性能

实体框架6和Async()性能
EN

Stack Overflow用户
提问于 2016-04-27 21:45:44
回答 1查看 221关注 0票数 0

我有一个关于实体框架6和ToListAsync()/ToList()的问题。

如果我有少量的数据(大约1000行),我就会注意到ToListAsync()比ToList()快。

但是如果我有大量的数据(大约600.000行),ToList()比ToListAsync()更快。

在这里你可以优化代码,有人可以解释为什么?

代码语言:javascript
复制
//SharedAnagra contains around 1000 rows
static List<SharedAnagra> GetSharedAnagraList()
{
    using (Intranet2k3Entities intranet2K3Entities = new Intranet2k3Entities())
    {
        List<SharedAnagra> listaSharedAnagras = (from a in intranet2K3Entities.sharedAnagra
                                                 select new SharedAnagra
                                                 {
                                                     AnagraActive = a.AnagraActive,
                                                     AnagraId = a.AnagraID,
                                                     AnagraName = a.AnagraName,
                                                     OfficeId = a.OfficeID
                                                 }).ToList();

        return listaSharedAnagras;
    }
}

static async Task<List<SharedAnagra>> GetSharedAnagraListAsync()
{
    using (Intranet2k3Entities intranet2K3Entities = new Intranet2k3Entities())
    {
        List<SharedAnagra> listaSharedAnagras = await (from a in intranet2K3Entities.sharedAnagra
                                                       select new SharedAnagra
                                                       {
                                                           AnagraActive = a.AnagraActive,
                                                           AnagraId = a.AnagraID,
                                                           AnagraName = a.AnagraName,
                                                           OfficeId = a.OfficeID
                                                       }).ToListAsync();

        return listaSharedAnagras;
    }
} 


//sharedAnagraNDGClienti contains 950000 rows
static List<SharedAnagraNdgClienti> ListaSharedNdgClienti()
{
    using (Intranet2k3Entities intranet2K3Entities = new Intranet2k3Entities())
    {
        List<SharedAnagraNdgClienti> lista = (from a in intranet2K3Entities.sharedAnagraNDGClienti
                                              select new SharedAnagraNdgClienti
                                              {
                                                  Cm = a.CM,
                                                  CodFisc = a.CodFisc,
                                                  Cognome = a.Cognome,
                                                  Descrizione = a.Descrizione,
                                                  FilialePrevalente = a.Filiale_Prevalente,
                                                  Ndg = a.NDG,
                                                  Nome = a.Nome,
                                                  Telefono = a.Telefono,
                                                  Tipologia = a.Tipologia,
                                                  Trae = a.TRAE,
                                                  Tsae = a.TSAE
                                              }).AsNoTracking().ToList();

        return lista;
    }
}

static async Task<List<SharedAnagraNdgClienti>> GetIssueTypeByIdAsync()
{
    List<SharedAnagraNdgClienti> listaSharedAnagraNdgClienti;

    using (Intranet2k3Entities intranet2K3Entities = new Intranet2k3Entities())
    {
        listaSharedAnagraNdgClienti = await (from a in intranet2K3Entities.sharedAnagraNDGClienti
                                             select new SharedAnagraNdgClienti
                                             {
                                                 Cm = a.CM,
                                                 CodFisc = a.CodFisc,
                                                 Cognome = a.Cognome,
                                                 Descrizione = a.Descrizione,
                                                 FilialePrevalente = a.Filiale_Prevalente,
                                                 Ndg = a.NDG,
                                                 Nome = a.Nome,
                                                 Telefono = a.Telefono,
                                                 Tipologia = a.Tipologia,
                                                 Trae = a.TRAE,
                                                 Tsae = a.TSAE
                                             }).AsNoTracking().ToListAsync();
    }

    return listaSharedAnagraNdgClienti;
}
EN

回答 1

Stack Overflow用户

发布于 2016-04-27 22:08:51

我认为这不是你的query.This的问题,而是EF 6+框架本身的问题。我个人没有做过任何关于Asyn vc Sync.But的研发,我找到了一些关于that.Hope的有用的文章,对你有帮助。

什么时候真正使用异步?

在大多数使用异步的应用程序中,

不会有明显的好处,甚至可能是有害的。在提交之前,使用测试、分析和常识来衡量异步在您的特定场景中的影响。

下面是这篇文章:

这是一位Stackoveflow user.You能读懂too.Great one的人所做的伟大研究。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36891699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档