EntityFramework.BulkInsertがデータベースに挿入する問題

bulkinsert entity-framework sqlbulkcopy

質問

私はEF6とSqlBulkCopyを利用するためにEntityFramework.BulkInsertライブラリを使用しようとしています。

ドキュメントは非常に単純ですが、私はデータベースにデータを取り込むことができません。

複雑な例では、コードは次のとおりです。

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にも同じ規則が適用されます。非常に速いですが!



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ