C# Refactor и производительность с помощью Entity Framework [закрыто]C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 C# Refactor и производительность с помощью Entity Framework [закрыто]

Сообщение Anonymous »

Вот мой код, что я пытаюсь рефакторировать и улучшить производительность.
Я пробовал советы из самого быстрого способа вставки в рамки сущности с 1000 Commit -Context.
У меня есть 50 коллекций экспортировать из MongoDB в SQL Server. В некоторой коллекции есть больше, что в Милионе документируют до 30 млн, что требует около 3 часов для перемещения /сохранения в SQL.
также понравится несколько советов по оптимализации и избыточности кода (возможно, некоторые дженерики?), Поскольку есть 50 аналогичных методов .. . < /p>

int chunkSize = 1_000;

var client = new MongoClient("mongo");
IMongoDatabase mongoDatabase = client.GetDatabase("mongoConnectionString");

await Export(mongoDatabase, chunkSize);

static async Task Export(IMongoDatabase mongoDatabase, int chunkSize)
{
IMongoCollection profileCollection = mongoDatabase.GetCollection("Profile");

var documentCount = await profileCollection.CountDocumentsAsync(FilterDefinition.Empty);
Logger.Info($"Profile collection count: {documentCount}");

var apacProfiles = profileCollection.Find(new BsonDocument()).ToList();

foreach (var profiles in apacProfiles.Batch(chunkSize))
{
var sqlDbContext = new SqlDbContext();
sqlDbContext.Configuration.AutoDetectChangesEnabled = false;
sqlDbContext.Configuration.AutoDetectChangesEnabled = true;

foreach (var profile in profiles)
{
ProfileTable profileTable = new ProfileTable();
profileTable.Name = profile.Name;

sqlDbContext.Profiles.Add(profile);
}
await sqlDbContext.SaveChangesAsync();
sqlDbContext.Dispose();
}

var sqlDbContext = new SqlDbContext();
var sqlCount = sqlDbContext.Profiles.Count();
Logger.Info($"Profiles count: {sqlCount}");

if (documentCount != sqlCount)
Logger.Info($"Document count - Profiles count: {documentCount - sqlCount}");
sqlDbContext.Dispose();
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... -framework
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»