Entity Framework vs LINQ to SQL

后端 未结 17 2173
离开以前
离开以前 2020-11-22 09:25

Now that .NET v3.5 SP1 has been released (along with VS2008 SP1), we now have access to the .NET entity framework.

My question is this. When trying to decide betwee

17条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-11-22 10:00

    Here's some metrics guys... (QUANTIFYING THINGS!!!!)

    I took this query where I was using Entity Framework

    var result = (from metattachType in _dbContext.METATTACH_TYPE
                    join lineItemMetattachType in _dbContext.LINE_ITEM_METATTACH_TYPE on metattachType.ID equals lineItemMetattachType.METATTACH_TYPE_ID
                    where (lineItemMetattachType.LINE_ITEM_ID == lineItemId && lineItemMetattachType.IS_DELETED == false
                    && metattachType.IS_DELETED == false)
                    select new MetattachTypeDto()
                    {
                        Id = metattachType.ID,
                        Name = metattachType.NAME
                    }).ToList();
    

    and changed it into this where I'm using the repository pattern Linq

                return await _attachmentTypeRepository.GetAll().Where(x => !x.IsDeleted)
                    .Join(_lineItemAttachmentTypeRepository.GetAll().Where(x => x.LineItemId == lineItemId && !x.IsDeleted),
                    attachmentType => attachmentType.Id,
                    lineItemAttachmentType => lineItemAttachmentType.MetattachTypeId,
                    (attachmentType, lineItemAttachmentType) => new AttachmentTypeDto
                    {
                        Id = attachmentType.Id,
                        Name = attachmentType.Name
                    }).ToListAsync().ConfigureAwait(false);
    

    Linq-to-sql

                return (from attachmentType in _attachmentTypeRepository.GetAll()
                        join lineItemAttachmentType in _lineItemAttachmentTypeRepository.GetAll() on attachmentType.Id equals lineItemAttachmentType.MetattachTypeId
                        where (lineItemAttachmentType.LineItemId == lineItemId && !lineItemAttachmentType.IsDeleted && !attachmentType.IsDeleted)
                        select new AttachmentTypeDto()
                        {
                            Id = attachmentType.Id,
                            Name = attachmentType.Name
                        }).ToList();
    

    Also, please know that Linq-to-Sql is 14x faster than Linq...

提交回复
热议问题