mirror of
https://github.com/claunia/romrepomgr.git
synced 2025-12-16 19:24:51 +00:00
Use bulk insertions to SQL.
This commit is contained in:
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -4,3 +4,6 @@
|
||||
[submodule "winfsp"]
|
||||
path = winfsp
|
||||
url = https://github.com/billziss-gh/winfsp/
|
||||
[submodule "EFCore.BulkExtensions"]
|
||||
path = EFCore.BulkExtensions
|
||||
url = https://github.com/claunia/EFCore.BulkExtensions
|
||||
|
||||
1
EFCore.BulkExtensions
Submodule
1
EFCore.BulkExtensions
Submodule
Submodule EFCore.BulkExtensions added at 39aa76658c
@@ -29,6 +29,7 @@ using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using Aaru.Checksums;
|
||||
using EFCore.BulkExtensions;
|
||||
using RomRepoMgr.Core.EventArgs;
|
||||
using RomRepoMgr.Core.Models;
|
||||
using RomRepoMgr.Core.Resources;
|
||||
@@ -165,14 +166,13 @@ namespace RomRepoMgr.Core.Workers
|
||||
var machine = new Machine
|
||||
{
|
||||
Name = name,
|
||||
RomSet = romSet,
|
||||
RomSetId = romSet.Id,
|
||||
CreatedOn = DateTime.UtcNow,
|
||||
UpdatedOn = DateTime.UtcNow
|
||||
};
|
||||
|
||||
machines[name] = machine;
|
||||
|
||||
ctx.Machines.Add(machine);
|
||||
position++;
|
||||
}
|
||||
|
||||
@@ -183,6 +183,7 @@ namespace RomRepoMgr.Core.Workers
|
||||
|
||||
SetIndeterminateProgress?.Invoke(this, System.EventArgs.Empty);
|
||||
|
||||
ctx.BulkInsert(machines.Values.ToList(), b => b.SetOutputIdentity = true);
|
||||
ctx.SaveChanges();
|
||||
|
||||
SetMessage?.Invoke(this, new MessageEventArgs
|
||||
@@ -441,8 +442,15 @@ namespace RomRepoMgr.Core.Workers
|
||||
|
||||
SetIndeterminateProgress?.Invoke(this, System.EventArgs.Empty);
|
||||
|
||||
ctx.Files.AddRange(newFiles);
|
||||
ctx.FilesByMachines.AddRange(newFilesByMachine);
|
||||
ctx.BulkInsert(newFiles, b => b.SetOutputIdentity = true);
|
||||
|
||||
foreach(FileByMachine fbm in newFilesByMachine)
|
||||
{
|
||||
fbm.FileId = fbm.File.Id;
|
||||
fbm.MachineId = fbm.Machine.Id;
|
||||
}
|
||||
|
||||
ctx.BulkInsert(newFilesByMachine);
|
||||
|
||||
ctx.SaveChanges();
|
||||
|
||||
@@ -562,8 +570,15 @@ namespace RomRepoMgr.Core.Workers
|
||||
|
||||
SetIndeterminateProgress?.Invoke(this, System.EventArgs.Empty);
|
||||
|
||||
ctx.Disks.AddRange(newDisks);
|
||||
ctx.DisksByMachines.AddRange(newDisksByMachine);
|
||||
ctx.BulkInsert(newDisks, b => b.SetOutputIdentity = true);
|
||||
|
||||
foreach(DiskByMachine dbm in newDisksByMachine)
|
||||
{
|
||||
dbm.DiskId = dbm.Disk.Id;
|
||||
dbm.MachineId = dbm.Machine.Id;
|
||||
}
|
||||
|
||||
ctx.BulkInsert(newDisksByMachine);
|
||||
|
||||
ctx.SaveChanges();
|
||||
|
||||
@@ -697,8 +712,15 @@ namespace RomRepoMgr.Core.Workers
|
||||
|
||||
SetIndeterminateProgress?.Invoke(this, System.EventArgs.Empty);
|
||||
|
||||
ctx.Medias.AddRange(newMedias);
|
||||
ctx.MediasByMachines.AddRange(newMediasByMachine);
|
||||
ctx.BulkInsert(newMedias, b => b.SetOutputIdentity = true);
|
||||
|
||||
foreach(MediaByMachine mbm in newMediasByMachine)
|
||||
{
|
||||
mbm.MediaId = mbm.Media.Id;
|
||||
mbm.MachineId = mbm.Machine.Id;
|
||||
}
|
||||
|
||||
ctx.BulkInsert(newMediasByMachine);
|
||||
|
||||
ctx.SaveChanges();
|
||||
|
||||
|
||||
@@ -36,6 +36,8 @@ namespace RomRepoMgr.Database.Models
|
||||
[Required]
|
||||
public virtual Machine Machine { get; set; }
|
||||
[Required]
|
||||
public string Name { get; set; }
|
||||
public string Name { get; set; }
|
||||
public ulong DiskId { get; set; }
|
||||
public ulong MachineId { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -36,6 +36,8 @@ namespace RomRepoMgr.Database.Models
|
||||
[Required]
|
||||
public virtual Machine Machine { get; set; }
|
||||
[Required]
|
||||
public string Name { get; set; }
|
||||
public string Name { get; set; }
|
||||
public ulong FileId { get; set; }
|
||||
public ulong MachineId { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -33,9 +33,10 @@ namespace RomRepoMgr.Database.Models
|
||||
[Required]
|
||||
public string Name { get; set; }
|
||||
[Required]
|
||||
public virtual RomSet RomSet { get; set; }
|
||||
public virtual ICollection<FileByMachine> Files { get; set; }
|
||||
public virtual ICollection<DiskByMachine> Disks { get; set; }
|
||||
public virtual ICollection<MediaByMachine> Medias { get; set; }
|
||||
public virtual RomSet RomSet { get; set; }
|
||||
public virtual ICollection<FileByMachine> Files { get; set; }
|
||||
public virtual ICollection<DiskByMachine> Disks { get; set; }
|
||||
public virtual ICollection<MediaByMachine> Medias { get; set; }
|
||||
public long RomSetId { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -36,6 +36,8 @@ namespace RomRepoMgr.Database.Models
|
||||
[Required]
|
||||
public virtual Machine Machine { get; set; }
|
||||
[Required]
|
||||
public string Name { get; set; }
|
||||
public string Name { get; set; }
|
||||
public ulong MediaId { get; set; }
|
||||
public ulong MachineId { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,7 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\EFCore.BulkExtensions\EFCore.BulkExtensions\EFCore.BulkExtensions.csproj" />
|
||||
<ProjectReference Include="..\RomRepoMgr.Settings\RomRepoMgr.Settings.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
@@ -12,6 +12,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SabreTools.Library", "Sabre
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "winfsp-netcore", "winfsp-netcore\winfsp-netcore.csproj", "{4B2B4DAC-39E2-417D-90F2-DCC97A5564B1}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EFCore.BulkExtensions", "EFCore.BulkExtensions\EFCore.BulkExtensions\EFCore.BulkExtensions.csproj", "{E17E880B-F3A7-4D0E-9583-A0645CE25135}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -42,5 +44,9 @@ Global
|
||||
{4B2B4DAC-39E2-417D-90F2-DCC97A5564B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4B2B4DAC-39E2-417D-90F2-DCC97A5564B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4B2B4DAC-39E2-417D-90F2-DCC97A5564B1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E17E880B-F3A7-4D0E-9583-A0645CE25135}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E17E880B-F3A7-4D0E-9583-A0645CE25135}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E17E880B-F3A7-4D0E-9583-A0645CE25135}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E17E880B-F3A7-4D0E-9583-A0645CE25135}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
Reference in New Issue
Block a user