Index: /trunk/sources/HeuristicLab.Services.Hive.DataAccess/3.3/ITransactionManager.cs
===================================================================
--- /trunk/sources/HeuristicLab.Services.Hive.DataAccess/3.3/ITransactionManager.cs	(revision 9265)
+++ /trunk/sources/HeuristicLab.Services.Hive.DataAccess/3.3/ITransactionManager.cs	(revision 9266)
@@ -24,6 +24,6 @@
 namespace HeuristicLab.Services.Hive.DataAccess {
   public interface ITransactionManager {
-    void UseTransaction(Action call, bool serializable = false, bool longRunning = false);
-    T UseTransaction<T>(Func<T> call, bool serializable = false, bool longRunning = false);
+    void UseTransaction(Action call, bool repeatableRead = false, bool longRunning = false);
+    T UseTransaction<T>(Func<T> call, bool repeatableRead = false, bool longRunning = false);
   }
 }
Index: /trunk/sources/HeuristicLab.Services.Hive/3.3/Convert.cs
===================================================================
--- /trunk/sources/HeuristicLab.Services.Hive/3.3/Convert.cs	(revision 9265)
+++ /trunk/sources/HeuristicLab.Services.Hive/3.3/Convert.cs	(revision 9266)
@@ -79,4 +79,23 @@
       }
     }
+
+    public static void ToEntityTaskOnly(DT.Task source, DB.Task target) {
+      if ((source != null) && (target != null)) {
+        target.TaskId = source.Id;
+        target.CoresNeeded = source.CoresNeeded;
+        target.ExecutionTimeMs = source.ExecutionTime.TotalMilliseconds;
+        target.MemoryNeeded = source.MemoryNeeded;
+        target.ParentTaskId = source.ParentTaskId;
+        target.Priority = source.Priority;
+        target.LastHeartbeat = source.LastHeartbeat;
+        target.State = Convert.ToEntity(source.State);
+        target.IsParentTask = source.IsParentTask;
+        target.FinishWhenChildJobsFinished = source.FinishWhenChildJobsFinished;
+        target.Command = Convert.ToEntity(source.Command);
+        // RequiredPlugins are added by Dao
+        target.JobId = source.JobId;
+        target.IsPrivileged = source.IsPrivileged;
+      }
+    }
     #endregion
 
Index: /trunk/sources/HeuristicLab.Services.Hive/3.3/HiveDao.cs
===================================================================
--- /trunk/sources/HeuristicLab.Services.Hive/3.3/HiveDao.cs	(revision 9265)
+++ /trunk/sources/HeuristicLab.Services.Hive/3.3/HiveDao.cs	(revision 9266)
@@ -120,9 +120,20 @@
     }
 
-    public void UpdateTask(DT.Task dto) {
+    public void UpdateTaskAndStateLogs(DT.Task dto) {
       using (var db = CreateContext()) {
         var entity = db.Tasks.FirstOrDefault(x => x.TaskId == dto.Id);
         if (entity == null) db.Tasks.InsertOnSubmit(DT.Convert.ToEntity(dto));
         else DT.Convert.ToEntity(dto, entity);
+        db.SubmitChanges();
+      }
+    }
+
+    public void UpdateTask(DT.Task dto) {
+      using (var db = CreateContext()) {
+        db.DeferredLoadingEnabled = false;
+
+        var entity = db.Tasks.FirstOrDefault(x => x.TaskId == dto.Id);
+        if (entity == null) db.Tasks.InsertOnSubmit(DT.Convert.ToEntity(dto));
+        else DT.Convert.ToEntityTaskOnly(dto, entity);
         db.SubmitChanges();
       }
@@ -186,6 +197,6 @@
     public DT.Task UpdateTaskState(Guid taskId, TaskState taskState, Guid? slaveId, Guid? userId, string exception) {
       using (var db = CreateContext()) {
-        var job = db.Tasks.SingleOrDefault(x => x.TaskId == taskId);
-        job.State = taskState;
+        db.DeferredLoadingEnabled = false;
+
         db.StateLogs.InsertOnSubmit(new StateLog {
           TaskId = taskId,
@@ -197,6 +208,13 @@
         });
         db.SubmitChanges();
-        job = db.Tasks.SingleOrDefault(x => x.TaskId == taskId);
-        return DT.Convert.ToDto(job);
+      }
+
+      using (var db = CreateContext()) {
+        db.DeferredLoadingEnabled = false;
+
+        var task = db.Tasks.SingleOrDefault(x => x.TaskId == taskId);
+        task.State = taskState;
+        db.SubmitChanges();
+        return DT.Convert.ToDto(task);
       }
     }
@@ -615,4 +633,6 @@
     public void AssignJobToResource(Guid taskId, IEnumerable<Guid> resourceIds) {
       using (var db = CreateContext()) {
+        db.DeferredLoadingEnabled = false;
+
         List<AssignedResource> assignedResources = new List<AssignedResource>();
         foreach (Guid rId in resourceIds) {
Index: /trunk/sources/HeuristicLab.Services.Hive/3.3/Interfaces/IHiveDao.cs
===================================================================
--- /trunk/sources/HeuristicLab.Services.Hive/3.3/Interfaces/IHiveDao.cs	(revision 9265)
+++ /trunk/sources/HeuristicLab.Services.Hive/3.3/Interfaces/IHiveDao.cs	(revision 9266)
@@ -35,4 +35,5 @@
     Guid AddTask(DT.Task dto);
     void UpdateTaskAndPlugins(DT.Task dto);
+    void UpdateTaskAndStateLogs(DT.Task dto);
     void UpdateTask(DT.Task dto);
     void DeleteTask(Guid id);
