Определение количества записей, вставленных при использовании расширений Zzz Entity Framework и BulkInsert - PullRequest
0 голосов
/ 03 апреля 2020

Есть ли способ узнать, сколько записей было вставлено при использовании Zzz Entity Framework Extensions и BulkInsert ?

Пример кода:

                using StreamReader streamReader = new StreamReader(File.OpenRead(fileName));
                using JsonTextReader jsonReader = new JsonTextReader(streamReader);
                IEnumerable<TDataType> data = loader.LoadJson(jsonReader);

                // DB options
                // TODO : Add MySql support
                DbContextOptionsBuilder optionsBuilder = new DbContextOptionsBuilder<TelemetryDbContext>();
                optionsBuilder
                    .UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking)
                    .UseSqlServer(connectionString, providerOptions => providerOptions.CommandTimeout(60));
                    //.UseMySql(connectionString, providerOptions => providerOptions.CommandTimeout(60));

                // Open DB connection
                using TelemetryDbContext dbContext = new TelemetryDbContext(optionsBuilder.Options);

                // Make sure DB schema is created
                dbContext.Database.EnsureCreated();

                // Bulk insert data
                dbContext.BulkInsert(data, 
                    options => 
                    { 
                        options.InsertIfNotExists = true;
                        options.AllowDuplicateKeys = true;
                    });

                // TODO: How many records were inserted?

1 Ответ

1 голос
/ 22 апреля 2020

Возможно получить строку, затронутую опцией UseRowsAffected (сделает объемную операцию немного медленнее.

var resultInfo = new Z.BulkOperations.ResultInfo();

ctx.BulkInsert(list, options =>
{
 options.UseRowsAffected = true;
 options.ResultInfo = resultInfo;
 ;
});

var rowsAffected = resultInfo.RowsAffected;

Онлайн Пример: https://dotnetfiddle.net/HuPnly

...