首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加速EF6 / sqlite的模型实例化

加速EF6 / sqlite的模型实例化
EN

Stack Overflow用户
提问于 2016-08-29 09:59:28
回答 2查看 320关注 0票数 0

例如,我收集了大量的12000个数据条目,并希望通过EF6将它们插入到sqlite数据库中。大多数时间消耗--数据模型的实例化

目前,我循环了12000次‘新的myItem()’

代码语言:javascript
复制
downloaded12000Items.foreach(result =>{
    var myItem= new myItem
    {
        Id = result.Id,
        Description = result.Description,
        Property1 = result.Property1
    }
    resultList.add(myItem);
});

unitOfWork.ItemRepository.InsertRange(resultList);

如何加快模型的实例化,或者是否有其他方法可以更快地将数据插入sqlite数据库?

编辑:我必须更好地解释我的问题。瓶颈不是插入数据库的insert()。要使用EF6 .insert(someModel),必须创建实体模型类的实例。我必须这样做12000次,所有12000个模型类的实例化需要花费太多的时间。

我的问题是,是否有可能通过克隆或其他方式加快模型类的建立过程?

或者,是否有可能在不使用.insert(someModel)的情况下将数据插入sqlite,或者使用直接的sql命令或其他方法?显然跳过模型实例化可能会有帮助..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-30 08:20:14

瓶颈可能是将实体添加到上下文中。

代码语言:javascript
复制
unitOfWork.ItemRepository.Insert(myItem);

起初它不需要太多的时间,但是在1000条记录之后,它确实需要时间。

还请参阅this answer以获得您可能添加的其他优化(请阅读链接答案的注释!)。

票数 1
EN

Stack Overflow用户

发布于 2016-08-29 10:03:13

如何加快模型的实例化,或者是否有其他方法可以更快地将数据插入sqlite数据库?

在完成循环并插入"12000数据条目“之后,在回购中使用等效的await Context.SaveChangesAsync()Tell me more

注意,为了提高性能,不再需要执行以下操作:

代码语言:javascript
复制
context.Configuration.AutoDetectChangesEnabled = false;  // out of date
context.Configuration.ValidateOnSaveEnabled = false; // out of date

...such代码有其自身的缺点,但更重要的是,它基于过时的哲学,没有利用EF中的await

下面是我用来保存需求实现矩阵的生产代码片段:

代码语言:javascript
复制
// create your objects
var matrix = // in my prod code I create in excess of 32,600+ matrix cells
foreach (var cell in cellsToAdd)
{
    matrix.Cells.Add(cell);
}

using (var context = new MyDbContext())
{
    context.Matrices.Add (newMatrix);

    await context.SaveChangesAsync();
}

当我在我的生产环境中插入32,646个矩阵单元时,我发现这是非常好的。简单地使用awaitSaveChangesAsync()可以提高性能12倍。其他策略,如批处理,虽然有些有用,但并不像AutoDetectChangesEnabled这样的有效和禁用选项,可以说,辜负了使用ORM的目的。

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

https://stackoverflow.com/questions/39203463

复制
相关文章

相似问题

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