entity-framework - EntityFramework.BulkInsert 问题插入到数据库中

标签 entity-framework bulkinsert sqlbulkcopy

我正在尝试使用 EntityFramework.BulkInsert用于利用 EF6 和 SqlBulkCopy 的库。

文档看起来非常简单,但是,我无法将任何数据填充到数据库中。

对于一个复杂的例子,这里是代码:

public void WriteChunkNoAsync(int chunkCount, bool forceSave = false)
{
    Chunking.Entities.Add(this);
    if (forceSave || Chunking.Entities.Count % chunkCount == 0)
    {
        using (var db = new FlatESContainer())
        {
            //db.Entity.AddRange(Chunking.Entities); //This will work
            db.BulkInsert(Chunking.Entities);
            Chunking.Entities = new List<Entity>();
            db.SaveChanges();
        }
    }
}

这段代码基本上会插入到一个全局列表中,直到列表计数可以被 chunckCount 整除。

AddRange 函数工作得很好。因此,我们决定创建一个非常简单的数据库,其中包含一个名为“Test”的表,这是我们遇到的问题:

List<Test> tests = new List<Test>();
for (int i = 0; i < 1000; i++)
{
    tests.Add(new Test());
}

using (var context = new SimpleContainer())
{
    //This works fine
    context.Tests.AddRange(tests);
    //This causes an exception: Type 'TestSimpleDatabase.Test' is not found in context 'TestSimpleDatabase.SimpleContainer'
    context.BulkInsert(tests);
    context.SaveChanges();
}

我相信这些是不同的问题,但也许 stackoverflow 社区中的某个人对我们遇到此问题的原因有任何想法。

最佳答案

因此,在尝试解决问题一段时间后,解决方案相当简单。相同的规则适用于必须插入每个表的 SqlBulkCopy,而不仅仅是引用其他表(通过外键)的表。不过速度非常快!

关于entity-framework - EntityFramework.BulkInsert 问题插入到数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25510197/

相关文章:

c# - 在 Entity Framework 中关闭 AutoDetectChangesEnabled 可能存在的风险

c# - 在此上下文中仅支持实体类型、枚举类型或原始类型

elasticsearch - Elasticsearch : Slow performance on large data set

sql-server - SqlBulkCopy 和 SQL 注入(inject)防护

c# - 如何从 LumenWorks(快速 CSV 阅读器)创建带有 IDataReader 的自定义类以在具有多个不同文件版本的同时使用 SqlBulkCopy?

.net - Entity Framework ——实体映射问题

c# - Oracle Instant Client 和 Entity Framework 的配置问题

带FIRSTROW参数的SQL批量插入跳过以下行

php - 如何处理包含 500 多个项目的 Symfony 表单集合

c# - 将 List<X> 转换为 DBDataReader