Changeset 12691 for branches/HiveStatistics/sources/HeuristicLab.Services.Hive.DataAccess/3.3/Daos/SlaveDao.cs
- Timestamp:
- 07/08/15 15:51:32 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HiveStatistics/sources/HeuristicLab.Services.Hive.DataAccess/3.3/Daos/SlaveDao.cs
r12551 r12691 46 46 #region IGenericDao<Guid,Slave> Members 47 47 public Slave GetById(Guid id) { 48 return Entities.SingleOrDefault(x => x.ResourceId ==id);48 return GetByIdQuery(dataContext, id); 49 49 } 50 50 … … 117 117 118 118 public bool Exists(Slave entity) { 119 return Table.Contains(entity);119 return ExistsQuery(dataContext, entity); 120 120 } 121 121 … … 124 124 } 125 125 #endregion 126 127 public bool SlaveHasToShutdownComputer(Guid slaveId) { 128 return dataContext.ExecuteQuery<int>(DowntimeQueryString, slaveId, DateTime.Now, DowntimeType.Shutdown.ToString()).FirstOrDefault() > 0; 129 } 130 131 public bool SlaveIsAllowedToCalculate(Guid slaveId) { 132 return dataContext.ExecuteQuery<int>(DowntimeQueryString, slaveId, DateTime.Now, DowntimeType.Offline.ToString()).FirstOrDefault() == 0; 133 } 134 135 #region Compiled queries 136 private static readonly Func<DataContext, Guid, Slave> GetByIdQuery = 137 CompiledQuery.Compile((DataContext db, Guid slaveId) => 138 (from slave in db.GetTable<Resource>().OfType<Slave>() 139 where slave.ResourceId == slaveId 140 select slave).SingleOrDefault()); 141 142 private static readonly Func<DataContext, Slave, bool> ExistsQuery = 143 CompiledQuery.Compile((DataContext db, Slave entity) => 144 db.GetTable<Resource>().OfType<Slave>().Contains(entity)); 145 #endregion 146 147 #region String queries 148 private const string DowntimeQueryString = @" 149 WITH pr AS ( 150 SELECT ResourceId, ParentResourceId 151 FROM [Resource] 152 WHERE ResourceId = {0} 153 UNION ALL 154 SELECT r.ResourceId, r.ParentResourceId 155 FROM [Resource] r JOIN pr ON r.ResourceId = pr.ParentResourceId 156 ) 157 SELECT COUNT(dt.DowntimeId) 158 FROM pr JOIN [Downtime] dt ON pr.ResourceId = dt.ResourceId 159 WHERE {1} BETWEEN dt.StartDate AND dt.EndDate 160 AND dt.DowntimeType = {2} 161 "; 162 #endregion 126 163 } 127 164 }
Note: See TracChangeset
for help on using the changeset viewer.