Index: trunk/sources/HeuristicLab.Services.Hive.DataAccess/3.3/HiveDataContext.designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Services.Hive.DataAccess/3.3/HiveDataContext.designer.cs	(revision 11623)
+++ trunk/sources/HeuristicLab.Services.Hive.DataAccess/3.3/HiveDataContext.designer.cs	(revision 12878)
@@ -3,5 +3,5 @@
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:4.0.30319.34014
+//     Runtime Version:4.0.30319.34209
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
@@ -67,16 +67,4 @@
     partial void UpdateLifecycle(Lifecycle instance);
     partial void DeleteLifecycle(Lifecycle instance);
-    partial void InsertDeletedJobStatistics(DeletedJobStatistics instance);
-    partial void UpdateDeletedJobStatistics(DeletedJobStatistics instance);
-    partial void DeleteDeletedJobStatistics(DeletedJobStatistics instance);
-    partial void InsertUserStatistics(UserStatistics instance);
-    partial void UpdateUserStatistics(UserStatistics instance);
-    partial void DeleteUserStatistics(UserStatistics instance);
-    partial void InsertSlaveStatistics(SlaveStatistics instance);
-    partial void UpdateSlaveStatistics(SlaveStatistics instance);
-    partial void DeleteSlaveStatistics(SlaveStatistics instance);
-    partial void InsertStatistics(Statistics instance);
-    partial void UpdateStatistics(Statistics instance);
-    partial void DeleteStatistics(Statistics instance);
     partial void InsertResourcePermission(ResourcePermission instance);
     partial void UpdateResourcePermission(ResourcePermission instance);
@@ -85,4 +73,22 @@
     partial void UpdateUserPriority(UserPriority instance);
     partial void DeleteUserPriority(UserPriority instance);
+    partial void InsertDimClient(DimClient instance);
+    partial void UpdateDimClient(DimClient instance);
+    partial void DeleteDimClient(DimClient instance);
+    partial void InsertFactTask(FactTask instance);
+    partial void UpdateFactTask(FactTask instance);
+    partial void DeleteFactTask(FactTask instance);
+    partial void InsertDimJob(DimJob instance);
+    partial void UpdateDimJob(DimJob instance);
+    partial void DeleteDimJob(DimJob instance);
+    partial void InsertDimTime(DimTime instance);
+    partial void UpdateDimTime(DimTime instance);
+    partial void DeleteDimTime(DimTime instance);
+    partial void InsertDimUser(DimUser instance);
+    partial void UpdateDimUser(DimUser instance);
+    partial void DeleteDimUser(DimUser instance);
+    partial void InsertFactClientInfo(FactClientInfo instance);
+    partial void UpdateFactClientInfo(FactClientInfo instance);
+    partial void DeleteFactClientInfo(FactClientInfo instance);
     #endregion
 		
@@ -213,36 +219,4 @@
 		}
 		
-		public System.Data.Linq.Table<DeletedJobStatistics> DeletedJobStatistics
-		{
-			get
-			{
-				return this.GetTable<DeletedJobStatistics>();
-			}
-		}
-		
-		public System.Data.Linq.Table<UserStatistics> UserStatistics
-		{
-			get
-			{
-				return this.GetTable<UserStatistics>();
-			}
-		}
-		
-		public System.Data.Linq.Table<SlaveStatistics> SlaveStatistics
-		{
-			get
-			{
-				return this.GetTable<SlaveStatistics>();
-			}
-		}
-		
-		public System.Data.Linq.Table<Statistics> Statistics
-		{
-			get
-			{
-				return this.GetTable<Statistics>();
-			}
-		}
-		
 		public System.Data.Linq.Table<ResourcePermission> ResourcePermissions
 		{
@@ -258,4 +232,52 @@
 			{
 				return this.GetTable<UserPriority>();
+			}
+		}
+		
+		public System.Data.Linq.Table<DimClient> DimClients
+		{
+			get
+			{
+				return this.GetTable<DimClient>();
+			}
+		}
+		
+		public System.Data.Linq.Table<FactTask> FactTasks
+		{
+			get
+			{
+				return this.GetTable<FactTask>();
+			}
+		}
+		
+		public System.Data.Linq.Table<DimJob> DimJobs
+		{
+			get
+			{
+				return this.GetTable<DimJob>();
+			}
+		}
+		
+		public System.Data.Linq.Table<DimTime> DimTimes
+		{
+			get
+			{
+				return this.GetTable<DimTime>();
+			}
+		}
+		
+		public System.Data.Linq.Table<DimUser> DimUsers
+		{
+			get
+			{
+				return this.GetTable<DimUser>();
+			}
+		}
+		
+		public System.Data.Linq.Table<FactClientInfo> FactClientInfos
+		{
+			get
+			{
+				return this.GetTable<FactClientInfo>();
 			}
 		}
@@ -3528,774 +3550,4 @@
 	}
 	
-	[global::System.Data.Linq.Mapping.TableAttribute(Name="")]
-	public partial class DeletedJobStatistics : INotifyPropertyChanging, INotifyPropertyChanged
-	{
-		
-		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
-		
-		private System.Guid _UserId;
-		
-		private double _ExecutionTime;
-		
-		private double _ExecutionTimeFinishedJobs;
-		
-		private double _StartToEndTime;
-		
-		private System.Guid _DeletedJobStatisticsId;
-		
-    #region Extensibility Method Definitions
-    partial void OnLoaded();
-    partial void OnValidate(System.Data.Linq.ChangeAction action);
-    partial void OnCreated();
-    partial void OnUserIdChanging(System.Guid value);
-    partial void OnUserIdChanged();
-    partial void OnExecutionTimeSChanging(double value);
-    partial void OnExecutionTimeSChanged();
-    partial void OnExecutionTimeSFinishedJobsChanging(double value);
-    partial void OnExecutionTimeSFinishedJobsChanged();
-    partial void OnStartToEndTimeSChanging(double value);
-    partial void OnStartToEndTimeSChanged();
-    partial void OnDeletedJobStatisticsIdChanging(System.Guid value);
-    partial void OnDeletedJobStatisticsIdChanged();
-    #endregion
-		
-		public DeletedJobStatistics()
-		{
-			OnCreated();
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UserId", DbType="UniqueIdentifier NOT NULL")]
-		public System.Guid UserId
-		{
-			get
-			{
-				return this._UserId;
-			}
-			set
-			{
-				if ((this._UserId != value))
-				{
-					this.OnUserIdChanging(value);
-					this.SendPropertyChanging();
-					this._UserId = value;
-					this.SendPropertyChanged("UserId");
-					this.OnUserIdChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ExecutionTime", DbType="float NOT NULL")]
-		public double ExecutionTimeS
-		{
-			get
-			{
-				return this._ExecutionTime;
-			}
-			set
-			{
-				if ((this._ExecutionTime != value))
-				{
-					this.OnExecutionTimeSChanging(value);
-					this.SendPropertyChanging();
-					this._ExecutionTime = value;
-					this.SendPropertyChanged("ExecutionTimeS");
-					this.OnExecutionTimeSChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ExecutionTimeFinishedJobs", DbType="float NOT NULL")]
-		public double ExecutionTimeSFinishedJobs
-		{
-			get
-			{
-				return this._ExecutionTimeFinishedJobs;
-			}
-			set
-			{
-				if ((this._ExecutionTimeFinishedJobs != value))
-				{
-					this.OnExecutionTimeSFinishedJobsChanging(value);
-					this.SendPropertyChanging();
-					this._ExecutionTimeFinishedJobs = value;
-					this.SendPropertyChanged("ExecutionTimeSFinishedJobs");
-					this.OnExecutionTimeSFinishedJobsChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_StartToEndTime", DbType="float NOT NULL")]
-		public double StartToEndTimeS
-		{
-			get
-			{
-				return this._StartToEndTime;
-			}
-			set
-			{
-				if ((this._StartToEndTime != value))
-				{
-					this.OnStartToEndTimeSChanging(value);
-					this.SendPropertyChanging();
-					this._StartToEndTime = value;
-					this.SendPropertyChanged("StartToEndTimeS");
-					this.OnStartToEndTimeSChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DeletedJobStatisticsId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)]
-		public System.Guid DeletedJobStatisticsId
-		{
-			get
-			{
-				return this._DeletedJobStatisticsId;
-			}
-			set
-			{
-				if ((this._DeletedJobStatisticsId != value))
-				{
-					this.OnDeletedJobStatisticsIdChanging(value);
-					this.SendPropertyChanging();
-					this._DeletedJobStatisticsId = value;
-					this.SendPropertyChanged("DeletedJobStatisticsId");
-					this.OnDeletedJobStatisticsIdChanged();
-				}
-			}
-		}
-		
-		public event PropertyChangingEventHandler PropertyChanging;
-		
-		public event PropertyChangedEventHandler PropertyChanged;
-		
-		protected virtual void SendPropertyChanging()
-		{
-			if ((this.PropertyChanging != null))
-			{
-				this.PropertyChanging(this, emptyChangingEventArgs);
-			}
-		}
-		
-		protected virtual void SendPropertyChanged(String propertyName)
-		{
-			if ((this.PropertyChanged != null))
-			{
-				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
-			}
-		}
-	}
-	
-	[global::System.Data.Linq.Mapping.TableAttribute(Name="")]
-	public partial class UserStatistics : INotifyPropertyChanging, INotifyPropertyChanged
-	{
-		
-		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
-		
-		private System.Guid _StatisticsId;
-		
-		private System.Guid _UserId;
-		
-		private double _ExecutionTime;
-		
-		private int _CoresUsed;
-		
-		private double _ExecutionTimeFinishedJobs;
-		
-		private double _StartToEndTime;
-		
-		private EntityRef<Statistics> _Statistics;
-		
-    #region Extensibility Method Definitions
-    partial void OnLoaded();
-    partial void OnValidate(System.Data.Linq.ChangeAction action);
-    partial void OnCreated();
-    partial void OnStatisticsIdChanging(System.Guid value);
-    partial void OnStatisticsIdChanged();
-    partial void OnUserIdChanging(System.Guid value);
-    partial void OnUserIdChanged();
-    partial void OnExecutionTimeMsChanging(double value);
-    partial void OnExecutionTimeMsChanged();
-    partial void OnUsedCoresChanging(int value);
-    partial void OnUsedCoresChanged();
-    partial void OnExecutionTimeMsFinishedJobsChanging(double value);
-    partial void OnExecutionTimeMsFinishedJobsChanged();
-    partial void OnStartToEndTimeMsChanging(double value);
-    partial void OnStartToEndTimeMsChanged();
-    #endregion
-		
-		public UserStatistics()
-		{
-			this._Statistics = default(EntityRef<Statistics>);
-			OnCreated();
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_StatisticsId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
-		public System.Guid StatisticsId
-		{
-			get
-			{
-				return this._StatisticsId;
-			}
-			set
-			{
-				if ((this._StatisticsId != value))
-				{
-					if (this._Statistics.HasLoadedOrAssignedValue)
-					{
-						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
-					}
-					this.OnStatisticsIdChanging(value);
-					this.SendPropertyChanging();
-					this._StatisticsId = value;
-					this.SendPropertyChanged("StatisticsId");
-					this.OnStatisticsIdChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UserId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
-		public System.Guid UserId
-		{
-			get
-			{
-				return this._UserId;
-			}
-			set
-			{
-				if ((this._UserId != value))
-				{
-					this.OnUserIdChanging(value);
-					this.SendPropertyChanging();
-					this._UserId = value;
-					this.SendPropertyChanged("UserId");
-					this.OnUserIdChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ExecutionTime", DbType="float NOT NULL")]
-		public double ExecutionTimeMs
-		{
-			get
-			{
-				return this._ExecutionTime;
-			}
-			set
-			{
-				if ((this._ExecutionTime != value))
-				{
-					this.OnExecutionTimeMsChanging(value);
-					this.SendPropertyChanging();
-					this._ExecutionTime = value;
-					this.SendPropertyChanged("ExecutionTimeMs");
-					this.OnExecutionTimeMsChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CoresUsed", DbType="Int NOT NULL")]
-		public int UsedCores
-		{
-			get
-			{
-				return this._CoresUsed;
-			}
-			set
-			{
-				if ((this._CoresUsed != value))
-				{
-					this.OnUsedCoresChanging(value);
-					this.SendPropertyChanging();
-					this._CoresUsed = value;
-					this.SendPropertyChanged("UsedCores");
-					this.OnUsedCoresChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ExecutionTimeFinishedJobs", DbType="float NOT NULL")]
-		public double ExecutionTimeMsFinishedJobs
-		{
-			get
-			{
-				return this._ExecutionTimeFinishedJobs;
-			}
-			set
-			{
-				if ((this._ExecutionTimeFinishedJobs != value))
-				{
-					this.OnExecutionTimeMsFinishedJobsChanging(value);
-					this.SendPropertyChanging();
-					this._ExecutionTimeFinishedJobs = value;
-					this.SendPropertyChanged("ExecutionTimeMsFinishedJobs");
-					this.OnExecutionTimeMsFinishedJobsChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_StartToEndTime", DbType="float NOT NULL")]
-		public double StartToEndTimeMs
-		{
-			get
-			{
-				return this._StartToEndTime;
-			}
-			set
-			{
-				if ((this._StartToEndTime != value))
-				{
-					this.OnStartToEndTimeMsChanging(value);
-					this.SendPropertyChanging();
-					this._StartToEndTime = value;
-					this.SendPropertyChanged("StartToEndTimeMs");
-					this.OnStartToEndTimeMsChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Statistics_UserStatistics", Storage="_Statistics", ThisKey="StatisticsId", OtherKey="StatisticsId", IsForeignKey=true)]
-		public Statistics Statistics
-		{
-			get
-			{
-				return this._Statistics.Entity;
-			}
-			set
-			{
-				Statistics previousValue = this._Statistics.Entity;
-				if (((previousValue != value) 
-							|| (this._Statistics.HasLoadedOrAssignedValue == false)))
-				{
-					this.SendPropertyChanging();
-					if ((previousValue != null))
-					{
-						this._Statistics.Entity = null;
-						previousValue.UserStatistics.Remove(this);
-					}
-					this._Statistics.Entity = value;
-					if ((value != null))
-					{
-						value.UserStatistics.Add(this);
-						this._StatisticsId = value.StatisticsId;
-					}
-					else
-					{
-						this._StatisticsId = default(System.Guid);
-					}
-					this.SendPropertyChanged("Statistics");
-				}
-			}
-		}
-		
-		public event PropertyChangingEventHandler PropertyChanging;
-		
-		public event PropertyChangedEventHandler PropertyChanged;
-		
-		protected virtual void SendPropertyChanging()
-		{
-			if ((this.PropertyChanging != null))
-			{
-				this.PropertyChanging(this, emptyChangingEventArgs);
-			}
-		}
-		
-		protected virtual void SendPropertyChanged(String propertyName)
-		{
-			if ((this.PropertyChanged != null))
-			{
-				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
-			}
-		}
-	}
-	
-	[global::System.Data.Linq.Mapping.TableAttribute(Name="")]
-	public partial class SlaveStatistics : INotifyPropertyChanging, INotifyPropertyChanged
-	{
-		
-		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
-		
-		private System.Guid _StatisticsId;
-		
-		private System.Guid _SlaveId;
-		
-		private int _Cores;
-		
-		private int _FreeCores;
-		
-		private double _CpuUtilization;
-		
-		private int _Memory;
-		
-		private int _FreeMemory;
-		
-		private EntityRef<Statistics> _Statistics;
-		
-    #region Extensibility Method Definitions
-    partial void OnLoaded();
-    partial void OnValidate(System.Data.Linq.ChangeAction action);
-    partial void OnCreated();
-    partial void OnStatisticsIdChanging(System.Guid value);
-    partial void OnStatisticsIdChanged();
-    partial void OnSlaveIdChanging(System.Guid value);
-    partial void OnSlaveIdChanged();
-    partial void OnCoresChanging(int value);
-    partial void OnCoresChanged();
-    partial void OnFreeCoresChanging(int value);
-    partial void OnFreeCoresChanged();
-    partial void OnCpuUtilizationChanging(double value);
-    partial void OnCpuUtilizationChanged();
-    partial void OnMemoryChanging(int value);
-    partial void OnMemoryChanged();
-    partial void OnFreeMemoryChanging(int value);
-    partial void OnFreeMemoryChanged();
-    #endregion
-		
-		public SlaveStatistics()
-		{
-			this._Statistics = default(EntityRef<Statistics>);
-			OnCreated();
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_StatisticsId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
-		public System.Guid StatisticsId
-		{
-			get
-			{
-				return this._StatisticsId;
-			}
-			set
-			{
-				if ((this._StatisticsId != value))
-				{
-					if (this._Statistics.HasLoadedOrAssignedValue)
-					{
-						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
-					}
-					this.OnStatisticsIdChanging(value);
-					this.SendPropertyChanging();
-					this._StatisticsId = value;
-					this.SendPropertyChanged("StatisticsId");
-					this.OnStatisticsIdChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_SlaveId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
-		public System.Guid SlaveId
-		{
-			get
-			{
-				return this._SlaveId;
-			}
-			set
-			{
-				if ((this._SlaveId != value))
-				{
-					this.OnSlaveIdChanging(value);
-					this.SendPropertyChanging();
-					this._SlaveId = value;
-					this.SendPropertyChanged("SlaveId");
-					this.OnSlaveIdChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Cores", DbType="Int NOT NULL")]
-		public int Cores
-		{
-			get
-			{
-				return this._Cores;
-			}
-			set
-			{
-				if ((this._Cores != value))
-				{
-					this.OnCoresChanging(value);
-					this.SendPropertyChanging();
-					this._Cores = value;
-					this.SendPropertyChanged("Cores");
-					this.OnCoresChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_FreeCores", DbType="Int NOT NULL")]
-		public int FreeCores
-		{
-			get
-			{
-				return this._FreeCores;
-			}
-			set
-			{
-				if ((this._FreeCores != value))
-				{
-					this.OnFreeCoresChanging(value);
-					this.SendPropertyChanging();
-					this._FreeCores = value;
-					this.SendPropertyChanged("FreeCores");
-					this.OnFreeCoresChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CpuUtilization", DbType="float NOT NULL")]
-		public double CpuUtilization
-		{
-			get
-			{
-				return this._CpuUtilization;
-			}
-			set
-			{
-				if ((this._CpuUtilization != value))
-				{
-					this.OnCpuUtilizationChanging(value);
-					this.SendPropertyChanging();
-					this._CpuUtilization = value;
-					this.SendPropertyChanged("CpuUtilization");
-					this.OnCpuUtilizationChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Memory", DbType="Int NOT NULL")]
-		public int Memory
-		{
-			get
-			{
-				return this._Memory;
-			}
-			set
-			{
-				if ((this._Memory != value))
-				{
-					this.OnMemoryChanging(value);
-					this.SendPropertyChanging();
-					this._Memory = value;
-					this.SendPropertyChanged("Memory");
-					this.OnMemoryChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_FreeMemory", DbType="Int NOT NULL")]
-		public int FreeMemory
-		{
-			get
-			{
-				return this._FreeMemory;
-			}
-			set
-			{
-				if ((this._FreeMemory != value))
-				{
-					this.OnFreeMemoryChanging(value);
-					this.SendPropertyChanging();
-					this._FreeMemory = value;
-					this.SendPropertyChanged("FreeMemory");
-					this.OnFreeMemoryChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Statistics_SlaveStatistics", Storage="_Statistics", ThisKey="StatisticsId", OtherKey="StatisticsId", IsForeignKey=true)]
-		public Statistics Statistics
-		{
-			get
-			{
-				return this._Statistics.Entity;
-			}
-			set
-			{
-				Statistics previousValue = this._Statistics.Entity;
-				if (((previousValue != value) 
-							|| (this._Statistics.HasLoadedOrAssignedValue == false)))
-				{
-					this.SendPropertyChanging();
-					if ((previousValue != null))
-					{
-						this._Statistics.Entity = null;
-						previousValue.SlaveStatistics.Remove(this);
-					}
-					this._Statistics.Entity = value;
-					if ((value != null))
-					{
-						value.SlaveStatistics.Add(this);
-						this._StatisticsId = value.StatisticsId;
-					}
-					else
-					{
-						this._StatisticsId = default(System.Guid);
-					}
-					this.SendPropertyChanged("Statistics");
-				}
-			}
-		}
-		
-		public event PropertyChangingEventHandler PropertyChanging;
-		
-		public event PropertyChangedEventHandler PropertyChanged;
-		
-		protected virtual void SendPropertyChanging()
-		{
-			if ((this.PropertyChanging != null))
-			{
-				this.PropertyChanging(this, emptyChangingEventArgs);
-			}
-		}
-		
-		protected virtual void SendPropertyChanged(String propertyName)
-		{
-			if ((this.PropertyChanged != null))
-			{
-				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
-			}
-		}
-	}
-	
-	[global::System.Data.Linq.Mapping.TableAttribute(Name="")]
-	public partial class Statistics : INotifyPropertyChanging, INotifyPropertyChanged
-	{
-		
-		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
-		
-		private System.Guid _StatisticsId;
-		
-		private System.DateTime _Timestamp;
-		
-		private EntitySet<UserStatistics> _UserStatistics;
-		
-		private EntitySet<SlaveStatistics> _SlaveStatistics;
-		
-    #region Extensibility Method Definitions
-    partial void OnLoaded();
-    partial void OnValidate(System.Data.Linq.ChangeAction action);
-    partial void OnCreated();
-    partial void OnStatisticsIdChanging(System.Guid value);
-    partial void OnStatisticsIdChanged();
-    partial void OnTimestampChanging(System.DateTime value);
-    partial void OnTimestampChanged();
-    #endregion
-		
-		public Statistics()
-		{
-			this._UserStatistics = new EntitySet<UserStatistics>(new Action<UserStatistics>(this.attach_UserStatistics), new Action<UserStatistics>(this.detach_UserStatistics));
-			this._SlaveStatistics = new EntitySet<SlaveStatistics>(new Action<SlaveStatistics>(this.attach_SlaveStatistics), new Action<SlaveStatistics>(this.detach_SlaveStatistics));
-			OnCreated();
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_StatisticsId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)]
-		public System.Guid StatisticsId
-		{
-			get
-			{
-				return this._StatisticsId;
-			}
-			set
-			{
-				if ((this._StatisticsId != value))
-				{
-					this.OnStatisticsIdChanging(value);
-					this.SendPropertyChanging();
-					this._StatisticsId = value;
-					this.SendPropertyChanged("StatisticsId");
-					this.OnStatisticsIdChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Timestamp")]
-		public System.DateTime Timestamp
-		{
-			get
-			{
-				return this._Timestamp;
-			}
-			set
-			{
-				if ((this._Timestamp != value))
-				{
-					this.OnTimestampChanging(value);
-					this.SendPropertyChanging();
-					this._Timestamp = value;
-					this.SendPropertyChanged("Timestamp");
-					this.OnTimestampChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Statistics_UserStatistics", Storage="_UserStatistics", ThisKey="StatisticsId", OtherKey="StatisticsId")]
-		public EntitySet<UserStatistics> UserStatistics
-		{
-			get
-			{
-				return this._UserStatistics;
-			}
-			set
-			{
-				this._UserStatistics.Assign(value);
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Statistics_SlaveStatistics", Storage="_SlaveStatistics", ThisKey="StatisticsId", OtherKey="StatisticsId")]
-		public EntitySet<SlaveStatistics> SlaveStatistics
-		{
-			get
-			{
-				return this._SlaveStatistics;
-			}
-			set
-			{
-				this._SlaveStatistics.Assign(value);
-			}
-		}
-		
-		public event PropertyChangingEventHandler PropertyChanging;
-		
-		public event PropertyChangedEventHandler PropertyChanged;
-		
-		protected virtual void SendPropertyChanging()
-		{
-			if ((this.PropertyChanging != null))
-			{
-				this.PropertyChanging(this, emptyChangingEventArgs);
-			}
-		}
-		
-		protected virtual void SendPropertyChanged(String propertyName)
-		{
-			if ((this.PropertyChanged != null))
-			{
-				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
-			}
-		}
-		
-		private void attach_UserStatistics(UserStatistics entity)
-		{
-			this.SendPropertyChanging();
-			entity.Statistics = this;
-		}
-		
-		private void detach_UserStatistics(UserStatistics entity)
-		{
-			this.SendPropertyChanging();
-			entity.Statistics = null;
-		}
-		
-		private void attach_SlaveStatistics(SlaveStatistics entity)
-		{
-			this.SendPropertyChanging();
-			entity.Statistics = this;
-		}
-		
-		private void detach_SlaveStatistics(SlaveStatistics entity)
-		{
-			this.SendPropertyChanging();
-			entity.Statistics = null;
-		}
-	}
-	
 	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.ResourcePermission")]
 	public partial class ResourcePermission : INotifyPropertyChanging, INotifyPropertyChanged
@@ -4534,4 +3786,1849 @@
 		}
 	}
+	
+	[global::System.Data.Linq.Mapping.TableAttribute(Name="[statistics].DimClient")]
+	public partial class DimClient : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _Id;
+		
+		private string _Name;
+		
+		private System.Guid _ResourceId;
+		
+		private System.Nullable<System.DateTime> _ExpirationTime;
+		
+		private System.Nullable<System.Guid> _ResourceGroupId;
+		
+		private System.Nullable<System.Guid> _ResourceGroup2Id;
+		
+		private string _GroupName;
+		
+		private string _GroupName2;
+		
+		private EntitySet<FactTask> _FactTasks;
+		
+		private EntitySet<FactClientInfo> _FactClientInfos;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnIdChanging(System.Guid value);
+    partial void OnIdChanged();
+    partial void OnNameChanging(string value);
+    partial void OnNameChanged();
+    partial void OnResourceIdChanging(System.Guid value);
+    partial void OnResourceIdChanged();
+    partial void OnExpirationTimeChanging(System.Nullable<System.DateTime> value);
+    partial void OnExpirationTimeChanged();
+    partial void OnResourceGroupIdChanging(System.Nullable<System.Guid> value);
+    partial void OnResourceGroupIdChanged();
+    partial void OnResourceGroup2IdChanging(System.Nullable<System.Guid> value);
+    partial void OnResourceGroup2IdChanged();
+    partial void OnGroupNameChanging(string value);
+    partial void OnGroupNameChanged();
+    partial void OnGroupName2Changing(string value);
+    partial void OnGroupName2Changed();
+    #endregion
+		
+		public DimClient()
+		{
+			this._FactTasks = new EntitySet<FactTask>(new Action<FactTask>(this.attach_FactTasks), new Action<FactTask>(this.detach_FactTasks));
+			this._FactClientInfos = new EntitySet<FactClientInfo>(new Action<FactClientInfo>(this.attach_FactClientInfos), new Action<FactClientInfo>(this.detach_FactClientInfos));
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)]
+		public System.Guid Id
+		{
+			get
+			{
+				return this._Id;
+			}
+			set
+			{
+				if ((this._Id != value))
+				{
+					this.OnIdChanging(value);
+					this.SendPropertyChanging();
+					this._Id = value;
+					this.SendPropertyChanged("Id");
+					this.OnIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="VarChar(MAX) NOT NULL", CanBeNull=false)]
+		public string Name
+		{
+			get
+			{
+				return this._Name;
+			}
+			set
+			{
+				if ((this._Name != value))
+				{
+					this.OnNameChanging(value);
+					this.SendPropertyChanging();
+					this._Name = value;
+					this.SendPropertyChanged("Name");
+					this.OnNameChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ResourceId", DbType="UniqueIdentifier NOT NULL")]
+		public System.Guid ResourceId
+		{
+			get
+			{
+				return this._ResourceId;
+			}
+			set
+			{
+				if ((this._ResourceId != value))
+				{
+					this.OnResourceIdChanging(value);
+					this.SendPropertyChanging();
+					this._ResourceId = value;
+					this.SendPropertyChanged("ResourceId");
+					this.OnResourceIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ExpirationTime", DbType="DateTime")]
+		public System.Nullable<System.DateTime> ExpirationTime
+		{
+			get
+			{
+				return this._ExpirationTime;
+			}
+			set
+			{
+				if ((this._ExpirationTime != value))
+				{
+					this.OnExpirationTimeChanging(value);
+					this.SendPropertyChanging();
+					this._ExpirationTime = value;
+					this.SendPropertyChanged("ExpirationTime");
+					this.OnExpirationTimeChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ResourceGroupId", DbType="UniqueIdentifier")]
+		public System.Nullable<System.Guid> ResourceGroupId
+		{
+			get
+			{
+				return this._ResourceGroupId;
+			}
+			set
+			{
+				if ((this._ResourceGroupId != value))
+				{
+					this.OnResourceGroupIdChanging(value);
+					this.SendPropertyChanging();
+					this._ResourceGroupId = value;
+					this.SendPropertyChanged("ResourceGroupId");
+					this.OnResourceGroupIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ResourceGroup2Id", DbType="UniqueIdentifier")]
+		public System.Nullable<System.Guid> ResourceGroup2Id
+		{
+			get
+			{
+				return this._ResourceGroup2Id;
+			}
+			set
+			{
+				if ((this._ResourceGroup2Id != value))
+				{
+					this.OnResourceGroup2IdChanging(value);
+					this.SendPropertyChanging();
+					this._ResourceGroup2Id = value;
+					this.SendPropertyChanged("ResourceGroup2Id");
+					this.OnResourceGroup2IdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_GroupName")]
+		public string GroupName
+		{
+			get
+			{
+				return this._GroupName;
+			}
+			set
+			{
+				if ((this._GroupName != value))
+				{
+					this.OnGroupNameChanging(value);
+					this.SendPropertyChanging();
+					this._GroupName = value;
+					this.SendPropertyChanged("GroupName");
+					this.OnGroupNameChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_GroupName2")]
+		public string GroupName2
+		{
+			get
+			{
+				return this._GroupName2;
+			}
+			set
+			{
+				if ((this._GroupName2 != value))
+				{
+					this.OnGroupName2Changing(value);
+					this.SendPropertyChanging();
+					this._GroupName2 = value;
+					this.SendPropertyChanged("GroupName2");
+					this.OnGroupName2Changed();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="DimClient_FactTask", Storage="_FactTasks", ThisKey="Id", OtherKey="LastClientId")]
+		public EntitySet<FactTask> FactTasks
+		{
+			get
+			{
+				return this._FactTasks;
+			}
+			set
+			{
+				this._FactTasks.Assign(value);
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="DimClient_FactClientInfo", Storage="_FactClientInfos", ThisKey="Id", OtherKey="ClientId")]
+		public EntitySet<FactClientInfo> FactClientInfos
+		{
+			get
+			{
+				return this._FactClientInfos;
+			}
+			set
+			{
+				this._FactClientInfos.Assign(value);
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		
+		private void attach_FactTasks(FactTask entity)
+		{
+			this.SendPropertyChanging();
+			entity.DimClient = this;
+		}
+		
+		private void detach_FactTasks(FactTask entity)
+		{
+			this.SendPropertyChanging();
+			entity.DimClient = null;
+		}
+		
+		private void attach_FactClientInfos(FactClientInfo entity)
+		{
+			this.SendPropertyChanging();
+			entity.DimClient = this;
+		}
+		
+		private void detach_FactClientInfos(FactClientInfo entity)
+		{
+			this.SendPropertyChanging();
+			entity.DimClient = null;
+		}
+	}
+	
+	[global::System.Data.Linq.Mapping.TableAttribute(Name="[statistics].FactTask")]
+	public partial class FactTask : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _TaskId;
+		
+		private long _TotalRuntime;
+		
+		private long _TotalWaitingTime;
+		
+		private long _TotalTransferTime;
+		
+		private int _NumCalculationRuns;
+		
+		private int _NumFails;
+		
+		private int _CoresRequired;
+		
+		private int _MemoryRequired;
+		
+		private int _Priority;
+		
+		private System.Nullable<System.Guid> _LastClientId;
+		
+		private System.Guid _JobId;
+		
+		private System.Nullable<System.DateTime> _EndTime;
+		
+		private global::HeuristicLab.Services.Hive.DataAccess.TaskState _TaskState;
+		
+		private string _Exception;
+		
+		private long _InitialWaitingTimeMs;
+		
+		private System.Nullable<System.DateTime> _StartTime;
+		
+		private EntityRef<DimClient> _DimClient;
+		
+		private EntityRef<DimJob> _DimJob;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnTaskIdChanging(System.Guid value);
+    partial void OnTaskIdChanged();
+    partial void OnCalculatingTimeChanging(long value);
+    partial void OnCalculatingTimeChanged();
+    partial void OnWaitingTimeChanging(long value);
+    partial void OnWaitingTimeChanged();
+    partial void OnTransferTimeChanging(long value);
+    partial void OnTransferTimeChanged();
+    partial void OnNumCalculationRunsChanging(int value);
+    partial void OnNumCalculationRunsChanged();
+    partial void OnNumRetriesChanging(int value);
+    partial void OnNumRetriesChanged();
+    partial void OnCoresRequiredChanging(int value);
+    partial void OnCoresRequiredChanged();
+    partial void OnMemoryRequiredChanging(int value);
+    partial void OnMemoryRequiredChanged();
+    partial void OnPriorityChanging(int value);
+    partial void OnPriorityChanged();
+    partial void OnLastClientIdChanging(System.Nullable<System.Guid> value);
+    partial void OnLastClientIdChanged();
+    partial void OnJobIdChanging(System.Guid value);
+    partial void OnJobIdChanged();
+    partial void OnEndTimeChanging(System.Nullable<System.DateTime> value);
+    partial void OnEndTimeChanged();
+    partial void OnTaskStateChanging(global::HeuristicLab.Services.Hive.DataAccess.TaskState value);
+    partial void OnTaskStateChanged();
+    partial void OnExceptionChanging(string value);
+    partial void OnExceptionChanged();
+    partial void OnInitialWaitingTimeChanging(long value);
+    partial void OnInitialWaitingTimeChanged();
+    partial void OnStartTimeChanging(System.Nullable<System.DateTime> value);
+    partial void OnStartTimeChanged();
+    #endregion
+		
+		public FactTask()
+		{
+			this._DimClient = default(EntityRef<DimClient>);
+			this._DimJob = default(EntityRef<DimJob>);
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TaskId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
+		public System.Guid TaskId
+		{
+			get
+			{
+				return this._TaskId;
+			}
+			set
+			{
+				if ((this._TaskId != value))
+				{
+					this.OnTaskIdChanging(value);
+					this.SendPropertyChanging();
+					this._TaskId = value;
+					this.SendPropertyChanged("TaskId");
+					this.OnTaskIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalRuntime", DbType="INT NOT NULL")]
+		public long CalculatingTime
+		{
+			get
+			{
+				return this._TotalRuntime;
+			}
+			set
+			{
+				if ((this._TotalRuntime != value))
+				{
+					this.OnCalculatingTimeChanging(value);
+					this.SendPropertyChanging();
+					this._TotalRuntime = value;
+					this.SendPropertyChanged("CalculatingTime");
+					this.OnCalculatingTimeChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalWaitingTime", DbType="INT NOT NULL")]
+		public long WaitingTime
+		{
+			get
+			{
+				return this._TotalWaitingTime;
+			}
+			set
+			{
+				if ((this._TotalWaitingTime != value))
+				{
+					this.OnWaitingTimeChanging(value);
+					this.SendPropertyChanging();
+					this._TotalWaitingTime = value;
+					this.SendPropertyChanged("WaitingTime");
+					this.OnWaitingTimeChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalTransferTime", DbType="INT NOT NULL")]
+		public long TransferTime
+		{
+			get
+			{
+				return this._TotalTransferTime;
+			}
+			set
+			{
+				if ((this._TotalTransferTime != value))
+				{
+					this.OnTransferTimeChanging(value);
+					this.SendPropertyChanging();
+					this._TotalTransferTime = value;
+					this.SendPropertyChanged("TransferTime");
+					this.OnTransferTimeChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_NumCalculationRuns", DbType="Int NOT NULL")]
+		public int NumCalculationRuns
+		{
+			get
+			{
+				return this._NumCalculationRuns;
+			}
+			set
+			{
+				if ((this._NumCalculationRuns != value))
+				{
+					this.OnNumCalculationRunsChanging(value);
+					this.SendPropertyChanging();
+					this._NumCalculationRuns = value;
+					this.SendPropertyChanged("NumCalculationRuns");
+					this.OnNumCalculationRunsChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_NumFails", DbType="Int NOT NULL")]
+		public int NumRetries
+		{
+			get
+			{
+				return this._NumFails;
+			}
+			set
+			{
+				if ((this._NumFails != value))
+				{
+					this.OnNumRetriesChanging(value);
+					this.SendPropertyChanging();
+					this._NumFails = value;
+					this.SendPropertyChanged("NumRetries");
+					this.OnNumRetriesChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CoresRequired", DbType="Int NOT NULL")]
+		public int CoresRequired
+		{
+			get
+			{
+				return this._CoresRequired;
+			}
+			set
+			{
+				if ((this._CoresRequired != value))
+				{
+					this.OnCoresRequiredChanging(value);
+					this.SendPropertyChanging();
+					this._CoresRequired = value;
+					this.SendPropertyChanged("CoresRequired");
+					this.OnCoresRequiredChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MemoryRequired", DbType="Int NOT NULL")]
+		public int MemoryRequired
+		{
+			get
+			{
+				return this._MemoryRequired;
+			}
+			set
+			{
+				if ((this._MemoryRequired != value))
+				{
+					this.OnMemoryRequiredChanging(value);
+					this.SendPropertyChanging();
+					this._MemoryRequired = value;
+					this.SendPropertyChanged("MemoryRequired");
+					this.OnMemoryRequiredChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Priority", DbType="Int NOT NULL")]
+		public int Priority
+		{
+			get
+			{
+				return this._Priority;
+			}
+			set
+			{
+				if ((this._Priority != value))
+				{
+					this.OnPriorityChanging(value);
+					this.SendPropertyChanging();
+					this._Priority = value;
+					this.SendPropertyChanged("Priority");
+					this.OnPriorityChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LastClientId", DbType="UniqueIdentifier NOT NULL")]
+		public System.Nullable<System.Guid> LastClientId
+		{
+			get
+			{
+				return this._LastClientId;
+			}
+			set
+			{
+				if ((this._LastClientId != value))
+				{
+					if (this._DimClient.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnLastClientIdChanging(value);
+					this.SendPropertyChanging();
+					this._LastClientId = value;
+					this.SendPropertyChanged("LastClientId");
+					this.OnLastClientIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_JobId", DbType="UniqueIdentifier NOT NULL")]
+		public System.Guid JobId
+		{
+			get
+			{
+				return this._JobId;
+			}
+			set
+			{
+				if ((this._JobId != value))
+				{
+					if (this._DimJob.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnJobIdChanging(value);
+					this.SendPropertyChanging();
+					this._JobId = value;
+					this.SendPropertyChanged("JobId");
+					this.OnJobIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_EndTime", DbType="DateTime NOT NULL")]
+		public System.Nullable<System.DateTime> EndTime
+		{
+			get
+			{
+				return this._EndTime;
+			}
+			set
+			{
+				if ((this._EndTime != value))
+				{
+					this.OnEndTimeChanging(value);
+					this.SendPropertyChanging();
+					this._EndTime = value;
+					this.SendPropertyChanged("EndTime");
+					this.OnEndTimeChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TaskState", DbType="varchar(30)", CanBeNull=false)]
+		public global::HeuristicLab.Services.Hive.DataAccess.TaskState TaskState
+		{
+			get
+			{
+				return this._TaskState;
+			}
+			set
+			{
+				if ((this._TaskState != value))
+				{
+					this.OnTaskStateChanging(value);
+					this.SendPropertyChanging();
+					this._TaskState = value;
+					this.SendPropertyChanged("TaskState");
+					this.OnTaskStateChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Exception", DbType="varchar(MAX)")]
+		public string Exception
+		{
+			get
+			{
+				return this._Exception;
+			}
+			set
+			{
+				if ((this._Exception != value))
+				{
+					this.OnExceptionChanging(value);
+					this.SendPropertyChanging();
+					this._Exception = value;
+					this.SendPropertyChanged("Exception");
+					this.OnExceptionChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_InitialWaitingTimeMs", DbType="INT")]
+		public long InitialWaitingTime
+		{
+			get
+			{
+				return this._InitialWaitingTimeMs;
+			}
+			set
+			{
+				if ((this._InitialWaitingTimeMs != value))
+				{
+					this.OnInitialWaitingTimeChanging(value);
+					this.SendPropertyChanging();
+					this._InitialWaitingTimeMs = value;
+					this.SendPropertyChanged("InitialWaitingTime");
+					this.OnInitialWaitingTimeChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_StartTime")]
+		public System.Nullable<System.DateTime> StartTime
+		{
+			get
+			{
+				return this._StartTime;
+			}
+			set
+			{
+				if ((this._StartTime != value))
+				{
+					this.OnStartTimeChanging(value);
+					this.SendPropertyChanging();
+					this._StartTime = value;
+					this.SendPropertyChanged("StartTime");
+					this.OnStartTimeChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="DimClient_FactTask", Storage="_DimClient", ThisKey="LastClientId", OtherKey="Id", IsForeignKey=true)]
+		public DimClient DimClient
+		{
+			get
+			{
+				return this._DimClient.Entity;
+			}
+			set
+			{
+				DimClient previousValue = this._DimClient.Entity;
+				if (((previousValue != value) 
+							|| (this._DimClient.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._DimClient.Entity = null;
+						previousValue.FactTasks.Remove(this);
+					}
+					this._DimClient.Entity = value;
+					if ((value != null))
+					{
+						value.FactTasks.Add(this);
+						this._LastClientId = value.Id;
+					}
+					else
+					{
+						this._LastClientId = default(Nullable<System.Guid>);
+					}
+					this.SendPropertyChanged("DimClient");
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="DimJob_FactTask", Storage="_DimJob", ThisKey="JobId", OtherKey="JobId", IsForeignKey=true)]
+		public DimJob DimJob
+		{
+			get
+			{
+				return this._DimJob.Entity;
+			}
+			set
+			{
+				DimJob previousValue = this._DimJob.Entity;
+				if (((previousValue != value) 
+							|| (this._DimJob.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._DimJob.Entity = null;
+						previousValue.FactTasks.Remove(this);
+					}
+					this._DimJob.Entity = value;
+					if ((value != null))
+					{
+						value.FactTasks.Add(this);
+						this._JobId = value.JobId;
+					}
+					else
+					{
+						this._JobId = default(System.Guid);
+					}
+					this.SendPropertyChanged("DimJob");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+	}
+	
+	[global::System.Data.Linq.Mapping.TableAttribute(Name="[statistics].DimJob")]
+	public partial class DimJob : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _JobId;
+		
+		private System.Guid _UserId;
+		
+		private string _JobName;
+		
+		private string _UserName;
+		
+		private System.DateTime _DateCreated;
+		
+		private int _TotalTasks;
+		
+		private int _CompletedTasks;
+		
+		private System.Nullable<System.DateTime> _DateCompleted;
+		
+		private EntitySet<FactTask> _FactTasks;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnJobIdChanging(System.Guid value);
+    partial void OnJobIdChanged();
+    partial void OnUserIdChanging(System.Guid value);
+    partial void OnUserIdChanged();
+    partial void OnJobNameChanging(string value);
+    partial void OnJobNameChanged();
+    partial void OnUserNameChanging(string value);
+    partial void OnUserNameChanged();
+    partial void OnDateCreatedChanging(System.DateTime value);
+    partial void OnDateCreatedChanged();
+    partial void OnTotalTasksChanging(int value);
+    partial void OnTotalTasksChanged();
+    partial void OnCompletedTasksChanging(int value);
+    partial void OnCompletedTasksChanged();
+    partial void OnDateCompletedChanging(System.Nullable<System.DateTime> value);
+    partial void OnDateCompletedChanged();
+    #endregion
+		
+		public DimJob()
+		{
+			this._FactTasks = new EntitySet<FactTask>(new Action<FactTask>(this.attach_FactTasks), new Action<FactTask>(this.detach_FactTasks));
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_JobId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
+		public System.Guid JobId
+		{
+			get
+			{
+				return this._JobId;
+			}
+			set
+			{
+				if ((this._JobId != value))
+				{
+					this.OnJobIdChanging(value);
+					this.SendPropertyChanging();
+					this._JobId = value;
+					this.SendPropertyChanged("JobId");
+					this.OnJobIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UserId", DbType="UniqueIdentifier NOT NULL")]
+		public System.Guid UserId
+		{
+			get
+			{
+				return this._UserId;
+			}
+			set
+			{
+				if ((this._UserId != value))
+				{
+					this.OnUserIdChanging(value);
+					this.SendPropertyChanging();
+					this._UserId = value;
+					this.SendPropertyChanged("UserId");
+					this.OnUserIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_JobName", DbType="VarChar(MAX) NOT NULL", CanBeNull=false)]
+		public string JobName
+		{
+			get
+			{
+				return this._JobName;
+			}
+			set
+			{
+				if ((this._JobName != value))
+				{
+					this.OnJobNameChanging(value);
+					this.SendPropertyChanging();
+					this._JobName = value;
+					this.SendPropertyChanged("JobName");
+					this.OnJobNameChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UserName", DbType="VarChar(MAX) NOT NULL", CanBeNull=false)]
+		public string UserName
+		{
+			get
+			{
+				return this._UserName;
+			}
+			set
+			{
+				if ((this._UserName != value))
+				{
+					this.OnUserNameChanging(value);
+					this.SendPropertyChanging();
+					this._UserName = value;
+					this.SendPropertyChanged("UserName");
+					this.OnUserNameChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DateCreated", DbType="DateTime NOT NULL")]
+		public System.DateTime DateCreated
+		{
+			get
+			{
+				return this._DateCreated;
+			}
+			set
+			{
+				if ((this._DateCreated != value))
+				{
+					this.OnDateCreatedChanging(value);
+					this.SendPropertyChanging();
+					this._DateCreated = value;
+					this.SendPropertyChanged("DateCreated");
+					this.OnDateCreatedChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalTasks", DbType="INT NOT NULL")]
+		public int TotalTasks
+		{
+			get
+			{
+				return this._TotalTasks;
+			}
+			set
+			{
+				if ((this._TotalTasks != value))
+				{
+					this.OnTotalTasksChanging(value);
+					this.SendPropertyChanging();
+					this._TotalTasks = value;
+					this.SendPropertyChanged("TotalTasks");
+					this.OnTotalTasksChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CompletedTasks", DbType="INT NOT NULL")]
+		public int CompletedTasks
+		{
+			get
+			{
+				return this._CompletedTasks;
+			}
+			set
+			{
+				if ((this._CompletedTasks != value))
+				{
+					this.OnCompletedTasksChanging(value);
+					this.SendPropertyChanging();
+					this._CompletedTasks = value;
+					this.SendPropertyChanged("CompletedTasks");
+					this.OnCompletedTasksChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DateCompleted", DbType="DateTime NULL")]
+		public System.Nullable<System.DateTime> DateCompleted
+		{
+			get
+			{
+				return this._DateCompleted;
+			}
+			set
+			{
+				if ((this._DateCompleted != value))
+				{
+					this.OnDateCompletedChanging(value);
+					this.SendPropertyChanging();
+					this._DateCompleted = value;
+					this.SendPropertyChanged("DateCompleted");
+					this.OnDateCompletedChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="DimJob_FactTask", Storage="_FactTasks", ThisKey="JobId", OtherKey="JobId")]
+		public EntitySet<FactTask> FactTasks
+		{
+			get
+			{
+				return this._FactTasks;
+			}
+			set
+			{
+				this._FactTasks.Assign(value);
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		
+		private void attach_FactTasks(FactTask entity)
+		{
+			this.SendPropertyChanging();
+			entity.DimJob = this;
+		}
+		
+		private void detach_FactTasks(FactTask entity)
+		{
+			this.SendPropertyChanging();
+			entity.DimJob = null;
+		}
+	}
+	
+	[global::System.Data.Linq.Mapping.TableAttribute(Name="[statistics].DimTime")]
+	public partial class DimTime : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.DateTime _Time;
+		
+		private System.DateTime _Hour;
+		
+		private System.DateTime _Day;
+		
+		private System.DateTime _Month;
+		
+		private System.DateTime _Year;
+		
+		private System.DateTime _Minute;
+		
+		private EntitySet<FactClientInfo> _FactClientInfos;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnTimeChanging(System.DateTime value);
+    partial void OnTimeChanged();
+    partial void OnHourChanging(System.DateTime value);
+    partial void OnHourChanged();
+    partial void OnDayChanging(System.DateTime value);
+    partial void OnDayChanged();
+    partial void OnMonthChanging(System.DateTime value);
+    partial void OnMonthChanged();
+    partial void OnYearChanging(System.DateTime value);
+    partial void OnYearChanged();
+    partial void OnMinuteChanging(System.DateTime value);
+    partial void OnMinuteChanged();
+    #endregion
+		
+		public DimTime()
+		{
+			this._FactClientInfos = new EntitySet<FactClientInfo>(new Action<FactClientInfo>(this.attach_FactClientInfos), new Action<FactClientInfo>(this.detach_FactClientInfos));
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Time", DbType="DateTime NOT NULL", IsPrimaryKey=true)]
+		public System.DateTime Time
+		{
+			get
+			{
+				return this._Time;
+			}
+			set
+			{
+				if ((this._Time != value))
+				{
+					this.OnTimeChanging(value);
+					this.SendPropertyChanging();
+					this._Time = value;
+					this.SendPropertyChanged("Time");
+					this.OnTimeChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Hour", DbType="DateTime NOT NULL")]
+		public System.DateTime Hour
+		{
+			get
+			{
+				return this._Hour;
+			}
+			set
+			{
+				if ((this._Hour != value))
+				{
+					this.OnHourChanging(value);
+					this.SendPropertyChanging();
+					this._Hour = value;
+					this.SendPropertyChanged("Hour");
+					this.OnHourChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Day", DbType="Date NOT NULL")]
+		public System.DateTime Day
+		{
+			get
+			{
+				return this._Day;
+			}
+			set
+			{
+				if ((this._Day != value))
+				{
+					this.OnDayChanging(value);
+					this.SendPropertyChanging();
+					this._Day = value;
+					this.SendPropertyChanged("Day");
+					this.OnDayChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Month", DbType="Date NOT NULL")]
+		public System.DateTime Month
+		{
+			get
+			{
+				return this._Month;
+			}
+			set
+			{
+				if ((this._Month != value))
+				{
+					this.OnMonthChanging(value);
+					this.SendPropertyChanging();
+					this._Month = value;
+					this.SendPropertyChanged("Month");
+					this.OnMonthChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Year", DbType="Date NOT NULL")]
+		public System.DateTime Year
+		{
+			get
+			{
+				return this._Year;
+			}
+			set
+			{
+				if ((this._Year != value))
+				{
+					this.OnYearChanging(value);
+					this.SendPropertyChanging();
+					this._Year = value;
+					this.SendPropertyChanged("Year");
+					this.OnYearChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Minute")]
+		public System.DateTime Minute
+		{
+			get
+			{
+				return this._Minute;
+			}
+			set
+			{
+				if ((this._Minute != value))
+				{
+					this.OnMinuteChanging(value);
+					this.SendPropertyChanging();
+					this._Minute = value;
+					this.SendPropertyChanged("Minute");
+					this.OnMinuteChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="DimTime_FactClientInfo", Storage="_FactClientInfos", ThisKey="Time", OtherKey="Time")]
+		public EntitySet<FactClientInfo> FactClientInfos
+		{
+			get
+			{
+				return this._FactClientInfos;
+			}
+			set
+			{
+				this._FactClientInfos.Assign(value);
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		
+		private void attach_FactClientInfos(FactClientInfo entity)
+		{
+			this.SendPropertyChanging();
+			entity.DimTime = this;
+		}
+		
+		private void detach_FactClientInfos(FactClientInfo entity)
+		{
+			this.SendPropertyChanging();
+			entity.DimTime = null;
+		}
+	}
+	
+	[global::System.Data.Linq.Mapping.TableAttribute(Name="[statistics].DimUser")]
+	public partial class DimUser : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _UserId;
+		
+		private string _Name;
+		
+		private EntitySet<FactClientInfo> _FactClientInfos;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnUserIdChanging(System.Guid value);
+    partial void OnUserIdChanged();
+    partial void OnNameChanging(string value);
+    partial void OnNameChanged();
+    #endregion
+		
+		public DimUser()
+		{
+			this._FactClientInfos = new EntitySet<FactClientInfo>(new Action<FactClientInfo>(this.attach_FactClientInfos), new Action<FactClientInfo>(this.detach_FactClientInfos));
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UserId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
+		public System.Guid UserId
+		{
+			get
+			{
+				return this._UserId;
+			}
+			set
+			{
+				if ((this._UserId != value))
+				{
+					this.OnUserIdChanging(value);
+					this.SendPropertyChanging();
+					this._UserId = value;
+					this.SendPropertyChanged("UserId");
+					this.OnUserIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="VarChar(MAX) NOT NULL", CanBeNull=false)]
+		public string Name
+		{
+			get
+			{
+				return this._Name;
+			}
+			set
+			{
+				if ((this._Name != value))
+				{
+					this.OnNameChanging(value);
+					this.SendPropertyChanging();
+					this._Name = value;
+					this.SendPropertyChanged("Name");
+					this.OnNameChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="DimUser_FactClientInfo", Storage="_FactClientInfos", ThisKey="UserId", OtherKey="UserId")]
+		public EntitySet<FactClientInfo> FactClientInfos
+		{
+			get
+			{
+				return this._FactClientInfos;
+			}
+			set
+			{
+				this._FactClientInfos.Assign(value);
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		
+		private void attach_FactClientInfos(FactClientInfo entity)
+		{
+			this.SendPropertyChanging();
+			entity.DimUser = this;
+		}
+		
+		private void detach_FactClientInfos(FactClientInfo entity)
+		{
+			this.SendPropertyChanging();
+			entity.DimUser = null;
+		}
+	}
+	
+	[global::System.Data.Linq.Mapping.TableAttribute(Name="[statistics].FactClientInfo")]
+	public partial class FactClientInfo : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _ClientId;
+		
+		private System.DateTime _Time;
+		
+		private System.Guid _UserId;
+		
+		private int _NumUsedCores;
+		
+		private int _NumTotalCores;
+		
+		private int _UsedMemory;
+		
+		private int _TotalMemory;
+		
+		private double _CpuUtilization;
+		
+		private long _TotalTimeIdle;
+		
+		private long _TotalTimeOffline;
+		
+		private long _TotalTimeUnavailable;
+		
+		private global::HeuristicLab.Services.Hive.DataAccess.SlaveState _SlaveState;
+		
+		private bool _IsAllowedToCalculate;
+		
+		private EntityRef<DimClient> _DimClient;
+		
+		private EntityRef<DimTime> _DimTime;
+		
+		private EntityRef<DimUser> _DimUser;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnClientIdChanging(System.Guid value);
+    partial void OnClientIdChanged();
+    partial void OnTimeChanging(System.DateTime value);
+    partial void OnTimeChanged();
+    partial void OnUserIdChanging(System.Guid value);
+    partial void OnUserIdChanged();
+    partial void OnNumUsedCoresChanging(int value);
+    partial void OnNumUsedCoresChanged();
+    partial void OnNumTotalCoresChanging(int value);
+    partial void OnNumTotalCoresChanged();
+    partial void OnUsedMemoryChanging(int value);
+    partial void OnUsedMemoryChanged();
+    partial void OnTotalMemoryChanging(int value);
+    partial void OnTotalMemoryChanged();
+    partial void OnCpuUtilizationChanging(double value);
+    partial void OnCpuUtilizationChanged();
+    partial void OnIdleTimeChanging(long value);
+    partial void OnIdleTimeChanged();
+    partial void OnOfflineTimeChanging(long value);
+    partial void OnOfflineTimeChanged();
+    partial void OnUnavailableTimeChanging(long value);
+    partial void OnUnavailableTimeChanged();
+    partial void OnSlaveStateChanging(global::HeuristicLab.Services.Hive.DataAccess.SlaveState value);
+    partial void OnSlaveStateChanged();
+    partial void OnIsAllowedToCalculateChanging(bool value);
+    partial void OnIsAllowedToCalculateChanged();
+    #endregion
+		
+		public FactClientInfo()
+		{
+			this._DimClient = default(EntityRef<DimClient>);
+			this._DimTime = default(EntityRef<DimTime>);
+			this._DimUser = default(EntityRef<DimUser>);
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ClientId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
+		public System.Guid ClientId
+		{
+			get
+			{
+				return this._ClientId;
+			}
+			set
+			{
+				if ((this._ClientId != value))
+				{
+					if (this._DimClient.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnClientIdChanging(value);
+					this.SendPropertyChanging();
+					this._ClientId = value;
+					this.SendPropertyChanged("ClientId");
+					this.OnClientIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Time", DbType="DateTime NOT NULL", IsPrimaryKey=true)]
+		public System.DateTime Time
+		{
+			get
+			{
+				return this._Time;
+			}
+			set
+			{
+				if ((this._Time != value))
+				{
+					if (this._DimTime.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnTimeChanging(value);
+					this.SendPropertyChanging();
+					this._Time = value;
+					this.SendPropertyChanged("Time");
+					this.OnTimeChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UserId", DbType="UniqueIdentifier NULL", IsPrimaryKey=true)]
+		public System.Guid UserId
+		{
+			get
+			{
+				return this._UserId;
+			}
+			set
+			{
+				if ((this._UserId != value))
+				{
+					if (this._DimUser.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnUserIdChanging(value);
+					this.SendPropertyChanging();
+					this._UserId = value;
+					this.SendPropertyChanged("UserId");
+					this.OnUserIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_NumUsedCores", DbType="Int NOT NULL")]
+		public int NumUsedCores
+		{
+			get
+			{
+				return this._NumUsedCores;
+			}
+			set
+			{
+				if ((this._NumUsedCores != value))
+				{
+					this.OnNumUsedCoresChanging(value);
+					this.SendPropertyChanging();
+					this._NumUsedCores = value;
+					this.SendPropertyChanged("NumUsedCores");
+					this.OnNumUsedCoresChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_NumTotalCores", DbType="Int NOT NULL")]
+		public int NumTotalCores
+		{
+			get
+			{
+				return this._NumTotalCores;
+			}
+			set
+			{
+				if ((this._NumTotalCores != value))
+				{
+					this.OnNumTotalCoresChanging(value);
+					this.SendPropertyChanging();
+					this._NumTotalCores = value;
+					this.SendPropertyChanged("NumTotalCores");
+					this.OnNumTotalCoresChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UsedMemory", DbType="Int NOT NULL")]
+		public int UsedMemory
+		{
+			get
+			{
+				return this._UsedMemory;
+			}
+			set
+			{
+				if ((this._UsedMemory != value))
+				{
+					this.OnUsedMemoryChanging(value);
+					this.SendPropertyChanging();
+					this._UsedMemory = value;
+					this.SendPropertyChanged("UsedMemory");
+					this.OnUsedMemoryChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalMemory", DbType="Int NOT NULL")]
+		public int TotalMemory
+		{
+			get
+			{
+				return this._TotalMemory;
+			}
+			set
+			{
+				if ((this._TotalMemory != value))
+				{
+					this.OnTotalMemoryChanging(value);
+					this.SendPropertyChanging();
+					this._TotalMemory = value;
+					this.SendPropertyChanged("TotalMemory");
+					this.OnTotalMemoryChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CpuUtilization", DbType="Float NOT NULL")]
+		public double CpuUtilization
+		{
+			get
+			{
+				return this._CpuUtilization;
+			}
+			set
+			{
+				if ((this._CpuUtilization != value))
+				{
+					this.OnCpuUtilizationChanging(value);
+					this.SendPropertyChanging();
+					this._CpuUtilization = value;
+					this.SendPropertyChanged("CpuUtilization");
+					this.OnCpuUtilizationChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalTimeIdle", DbType="INT NOT NULL")]
+		public long IdleTime
+		{
+			get
+			{
+				return this._TotalTimeIdle;
+			}
+			set
+			{
+				if ((this._TotalTimeIdle != value))
+				{
+					this.OnIdleTimeChanging(value);
+					this.SendPropertyChanging();
+					this._TotalTimeIdle = value;
+					this.SendPropertyChanged("IdleTime");
+					this.OnIdleTimeChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalTimeOffline", DbType="INT NOT NULL")]
+		public long OfflineTime
+		{
+			get
+			{
+				return this._TotalTimeOffline;
+			}
+			set
+			{
+				if ((this._TotalTimeOffline != value))
+				{
+					this.OnOfflineTimeChanging(value);
+					this.SendPropertyChanging();
+					this._TotalTimeOffline = value;
+					this.SendPropertyChanged("OfflineTime");
+					this.OnOfflineTimeChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalTimeUnavailable", DbType="INT NOT NULL")]
+		public long UnavailableTime
+		{
+			get
+			{
+				return this._TotalTimeUnavailable;
+			}
+			set
+			{
+				if ((this._TotalTimeUnavailable != value))
+				{
+					this.OnUnavailableTimeChanging(value);
+					this.SendPropertyChanging();
+					this._TotalTimeUnavailable = value;
+					this.SendPropertyChanged("UnavailableTime");
+					this.OnUnavailableTimeChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_SlaveState", DbType="VarChar(15)", CanBeNull=false)]
+		public global::HeuristicLab.Services.Hive.DataAccess.SlaveState SlaveState
+		{
+			get
+			{
+				return this._SlaveState;
+			}
+			set
+			{
+				if ((this._SlaveState != value))
+				{
+					this.OnSlaveStateChanging(value);
+					this.SendPropertyChanging();
+					this._SlaveState = value;
+					this.SendPropertyChanged("SlaveState");
+					this.OnSlaveStateChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IsAllowedToCalculate", DbType="BIT")]
+		public bool IsAllowedToCalculate
+		{
+			get
+			{
+				return this._IsAllowedToCalculate;
+			}
+			set
+			{
+				if ((this._IsAllowedToCalculate != value))
+				{
+					this.OnIsAllowedToCalculateChanging(value);
+					this.SendPropertyChanging();
+					this._IsAllowedToCalculate = value;
+					this.SendPropertyChanged("IsAllowedToCalculate");
+					this.OnIsAllowedToCalculateChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="DimClient_FactClientInfo", Storage="_DimClient", ThisKey="ClientId", OtherKey="Id", IsForeignKey=true)]
+		public DimClient DimClient
+		{
+			get
+			{
+				return this._DimClient.Entity;
+			}
+			set
+			{
+				DimClient previousValue = this._DimClient.Entity;
+				if (((previousValue != value) 
+							|| (this._DimClient.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._DimClient.Entity = null;
+						previousValue.FactClientInfos.Remove(this);
+					}
+					this._DimClient.Entity = value;
+					if ((value != null))
+					{
+						value.FactClientInfos.Add(this);
+						this._ClientId = value.Id;
+					}
+					else
+					{
+						this._ClientId = default(System.Guid);
+					}
+					this.SendPropertyChanged("DimClient");
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="DimTime_FactClientInfo", Storage="_DimTime", ThisKey="Time", OtherKey="Time", IsForeignKey=true)]
+		public DimTime DimTime
+		{
+			get
+			{
+				return this._DimTime.Entity;
+			}
+			set
+			{
+				DimTime previousValue = this._DimTime.Entity;
+				if (((previousValue != value) 
+							|| (this._DimTime.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._DimTime.Entity = null;
+						previousValue.FactClientInfos.Remove(this);
+					}
+					this._DimTime.Entity = value;
+					if ((value != null))
+					{
+						value.FactClientInfos.Add(this);
+						this._Time = value.Time;
+					}
+					else
+					{
+						this._Time = default(System.DateTime);
+					}
+					this.SendPropertyChanged("DimTime");
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="DimUser_FactClientInfo", Storage="_DimUser", ThisKey="UserId", OtherKey="UserId", IsForeignKey=true)]
+		public DimUser DimUser
+		{
+			get
+			{
+				return this._DimUser.Entity;
+			}
+			set
+			{
+				DimUser previousValue = this._DimUser.Entity;
+				if (((previousValue != value) 
+							|| (this._DimUser.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._DimUser.Entity = null;
+						previousValue.FactClientInfos.Remove(this);
+					}
+					this._DimUser.Entity = value;
+					if ((value != null))
+					{
+						value.FactClientInfos.Add(this);
+						this._UserId = value.UserId;
+					}
+					else
+					{
+						this._UserId = default(System.Guid);
+					}
+					this.SendPropertyChanged("DimUser");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+	}
 }
 #pragma warning restore 1591
