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