From 4fca015afa3d13cb8ab6398b1e05b8ce24218556 Mon Sep 17 00:00:00 2001 From: Gary Sharp Date: Fri, 13 Nov 2020 20:15:31 +1100 Subject: [PATCH] bug fix: delete devices with assignment history --- .../Devices/DeviceActionExtensions.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/Disco.Services/Devices/DeviceActionExtensions.cs b/Disco.Services/Devices/DeviceActionExtensions.cs index 7a898cab..d26eb04c 100644 --- a/Disco.Services/Devices/DeviceActionExtensions.cs +++ b/Disco.Services/Devices/DeviceActionExtensions.cs @@ -182,9 +182,23 @@ namespace Disco.Services da.RepositoryDelete(Database); Database.DeviceAttachments.Remove(da); } + // Delete Device User Assignments - foreach (var dua in Database.DeviceUserAssignments.Where(i => i.DeviceSerialNumber == d.SerialNumber)) - Database.DeviceUserAssignments.Remove(dua); + // Custom SQL to bypass Entity Framework 5 datetime2 Bug + using (var tempCommand = Database.Database.Connection.CreateCommand()) + { + var paramDeviceSerialNumber = tempCommand.CreateParameter(); + paramDeviceSerialNumber.DbType = System.Data.DbType.String; + paramDeviceSerialNumber.Direction = System.Data.ParameterDirection.Input; + paramDeviceSerialNumber.ParameterName = "@DeviceSerialNumber"; + paramDeviceSerialNumber.Size = 60; + paramDeviceSerialNumber.Value = d.SerialNumber; + + Database.Database.ExecuteSqlCommand( + "DELETE [dbo].[DeviceUserAssignments] WHERE ([DeviceSerialNumber] = @DeviceSerialNumber)", + paramDeviceSerialNumber + ); + } Database.Devices.Remove(d); }