Вот мой код, что я пытаюсь рефакторировать и улучшить производительность.
Я пробовал советы из самого быстрого способа вставки в рамки сущности с 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
C# Refactor и производительность с помощью Entity Framework [закрыто] ⇐ C#
Место общения программистов C#
1739958955
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();
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79450893/c-sharp-refactor-and-performance-with-entity-framework[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия