/// <summary>
 /// Create new device from the device template.
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public GXCreateDeviceResponse Get(GXCreateDeviceRequest request)
 {
     lock (Db)
     {
         //Create devices from the device templates.
         List <GXAmiDevice> devices = new List <GXAmiDevice>();
         foreach (ulong id in request.Ids)
         {
             List <GXAmiDeviceProfile> tmp = Db.Select <GXAmiDeviceProfile>(q => q.Id == id);
             if (tmp.Count != 1)
             {
                 throw new ArgumentException("Access denied.");
             }
             GXAmiDevice dev = tmp[0] as GXAmiDevice;
             dev.Guid      = Guid.NewGuid();
             dev.Id        = 0;
             dev.ProfileId = id;
             List <GXAmiParameterTemplate> list = Db.Select <GXAmiParameterTemplate>(q => q.ParentID == id << 16);
             dev.Parameters = list.ConvertAll <GXAmiParameter>(new Converter <GXAmiParameterTemplate, GXAmiParameter>(p => p.ToParameter())).ToArray();
             devices.Add(dev);
         }
         return(new GXCreateDeviceResponse(devices.ToArray()));
     }
 }
 /// <summary>
 /// Create new device from the device template.
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public GXCreateDeviceResponse Get(GXCreateDeviceRequest request)
 {
     lock (Db)
     {
         //Create devices from the device templates.
         List<GXAmiDevice> devices = new List<GXAmiDevice>();
         foreach (ulong id in request.Ids)
         {
             List<GXAmiDeviceProfile> tmp = Db.Select<GXAmiDeviceProfile>(q => q.Id == id);
             if (tmp.Count != 1)
             {
                 throw new ArgumentException("Access denied.");
             }
             GXAmiDevice dev = tmp[0] as GXAmiDevice;
             dev.Guid = Guid.NewGuid();
             dev.Id = 0;
             dev.ProfileId = id;
             List<GXAmiParameterTemplate> list = Db.Select<GXAmiParameterTemplate>(q => q.ParentID == id << 16);
             dev.Parameters = list.ConvertAll<GXAmiParameter>(new Converter<GXAmiParameterTemplate, GXAmiParameter>(p => p.ToParameter())).ToArray();
             devices.Add(dev);
         }
         return new GXCreateDeviceResponse(devices.ToArray());
     }
 }