Bug fix #109 SQL Server 2016 Support

This commit is contained in:
Gary Sharp
2018-04-23 18:21:44 +10:00
parent cb033c0b70
commit b4a30061e3
2 changed files with 37 additions and 2 deletions
+36 -1
View File
@@ -126,13 +126,48 @@ namespace Disco.Services
return d2;
}
public static void Unassign(this DeviceUserAssignment dua, DiscoDataContext Database)
{
// Entity Framework 5 Bug
// all dates are handled as datetime2 which do not match the
// datetime type of the AssignedDate key
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 = dua.DeviceSerialNumber;
var paramAssignedDate = tempCommand.CreateParameter();
paramAssignedDate.DbType = System.Data.DbType.DateTime;
paramAssignedDate.Direction = System.Data.ParameterDirection.Input;
paramAssignedDate.ParameterName = "@AssignedDate";
paramAssignedDate.Value = dua.AssignedDate;
var paramUnassignedDate = tempCommand.CreateParameter();
paramUnassignedDate.DbType = System.Data.DbType.DateTime;
paramUnassignedDate.Direction = System.Data.ParameterDirection.Input;
paramUnassignedDate.ParameterName = "@UnassignedDate";
paramUnassignedDate.Value = DateTime.Now;
Database.Database.ExecuteSqlCommand(
"update [dbo].[DeviceUserAssignments] set[UnassignedDate] = @UnassignedDate where(([DeviceSerialNumber] = @DeviceSerialNumber) and([AssignedDate] = @AssignedDate))",
paramUnassignedDate, paramDeviceSerialNumber, paramAssignedDate
);
}
}
public static DeviceUserAssignment AssignDevice(this Device d, DiscoDataContext Database, User u)
{
DeviceUserAssignment newDua = default(DeviceUserAssignment);
// Mark existing assignments as Unassigned
foreach (var dua in Database.DeviceUserAssignments.Where(m => m.DeviceSerialNumber == d.SerialNumber && !m.UnassignedDate.HasValue))
dua.UnassignedDate = DateTime.Now;
{
dua.Unassign(Database);
}
if (u != null)
{
@@ -109,7 +109,7 @@ namespace Disco.Services.Devices.Importing.Fields
var currentAssignments = Device.DeviceUserAssignments.Where(dua => !dua.UnassignedDate.HasValue);
foreach (var currentAssignment in currentAssignments)
{
currentAssignment.UnassignedDate = DateTime.Now;
currentAssignment.Unassign(Database);
}
}