Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Core/3.3/DataSet.cs
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Core/3.3/DataSet.cs	(revision 2184)
+++ 	(revision )
@@ -1,100 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using HeuristicLab.Core;
-using System.Xml;
-using HeuristicLab.CEDMA.DB.Interfaces;
-using HeuristicLab.Operators;
-
-namespace HeuristicLab.CEDMA.Core {
-  public class DataSet : IViewable {
-    public IStore Store { get; set; }
-
-    private Guid guid;
-    public Guid Guid {
-      get { return guid; }
-    }
-
-    private string name;
-    public string Name {
-      get { return name; }
-      set { name = value; }
-    }
-
-    private Problem problem;
-    public Problem Problem {
-      get {
-        return problem;
-      }
-    }
-
-    private bool activated;
-    public bool Activated {
-      get { return activated; }
-    }
-
-    public DataSet()
-      : base() {
-      guid = Guid.NewGuid();
-      name = "Data set";
-      activated = false;
-      problem = new Problem();
-    }
-
-    public DataSet(IStore store, Entity dataSetEntity)
-      : this() {
-      Store = store;
-      guid = new Guid(dataSetEntity.Uri.Remove(0, Ontology.CedmaNameSpace.Length));
-      name = guid.ToString();
-      var persistedData = Store.Query(
-        "<" + Ontology.CedmaNameSpace + Guid + "> <" + Ontology.SerializedData.Uri + "> ?SerializedData .", 0, 10);
-      if (persistedData.Count() == 1) {
-        Literal persistedLiteral = (Literal)persistedData.First().Get("SerializedData");
-        problem = (Problem)PersistenceManager.RestoreFromGZip(Convert.FromBase64String((string)persistedLiteral.Value));
-      } else problem = new Problem();
-      activated = true;
-    }
-
-    public void Activate() {
-      Entity myEntity = new Entity(Ontology.CedmaNameSpace + Guid);
-      Store.AddRange(
-        new Statement[] { 
-          new Statement(myEntity, Ontology.InstanceOf, Ontology.TypeDataSet),
-          new Statement(myEntity, Ontology.SerializedData, new Literal(Convert.ToBase64String(PersistenceManager.SaveToGZip(problem)))),
-          new Statement(myEntity, Ontology.Name, new Literal(name))
-        });
-      activated = true;
-    }
-
-    public IView CreateView() {
-      return new DataSetView(this);
-    }
-
-    internal Results GetResults() {
-      Results results = new Results(Store);
-      return results;
-    }
-  }
-}
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Core/3.3/HeuristicLab.CEDMA.Core-3.3.csproj
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Core/3.3/HeuristicLab.CEDMA.Core-3.3.csproj	(revision 2184)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Core/3.3/HeuristicLab.CEDMA.Core-3.3.csproj	(revision 2185)
@@ -101,6 +101,4 @@
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="Problem.cs" />
-    <Compile Include="DataSet.cs" />
     <Compile Include="DataSetView.cs">
       <SubType>UserControl</SubType>
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Core/3.3/Problem.cs
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Core/3.3/Problem.cs	(revision 2184)
+++ 	(revision )
@@ -1,217 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using HeuristicLab.Core;
-using System.Xml;
-using HeuristicLab.CEDMA.DB.Interfaces;
-using HeuristicLab.Operators;
-
-namespace HeuristicLab.CEDMA.Core {
-
-  public enum LearningTask {
-    Classification,
-    Regression,
-    TimeSeries,
-    Clustering
-  }
-
-  /// <summary>
-  /// Problem describes the data mining task.
-  /// Contains the actual data and meta-data:
-  ///  * which variables should be modelled 
-  ///  * regression, time-series or classification problem
-  /// </summary>
-  public class Problem : ItemBase {
-    private HeuristicLab.DataAnalysis.Dataset dataset;
-    public HeuristicLab.DataAnalysis.Dataset Dataset {
-      get { return dataset; }
-    }
-
-    private int trainingSamplesStart;
-    public int TrainingSamplesStart {
-      get { return trainingSamplesStart; }
-      set { trainingSamplesStart = value; }
-    }
-
-    private int trainingSamplesEnd;
-    public int TrainingSamplesEnd {
-      get { return trainingSamplesEnd; }
-      set { trainingSamplesEnd = value; }
-    }
-
-    private int validationSamplesStart;
-    public int ValidationSamplesStart {
-      get { return validationSamplesStart; }
-      set { validationSamplesStart = value; }
-    }
-
-    private int validationSamplesEnd;
-    public int ValidationSamplesEnd {
-      get { return validationSamplesEnd; }
-      set { validationSamplesEnd = value; }
-    }
-
-    private int testSamplesStart;
-    public int TestSamplesStart {
-      get { return testSamplesStart; }
-      set { testSamplesStart = value; }
-    }
-
-    private int testSamplesEnd;
-    public int TestSamplesEnd {
-      get { return testSamplesEnd; }
-      set { testSamplesEnd = value; }
-    }
-
-    private List<int> allowedInputVariables;
-    public List<int> AllowedInputVariables {
-      get { return allowedInputVariables; }
-    }
-
-    private List<int> allowedTargetVariables;
-    public List<int> AllowedTargetVariables {
-      get { return allowedTargetVariables; }
-    }
-
-    private bool autoRegressive;
-    public bool AutoRegressive {
-      get { return autoRegressive; }
-      set { autoRegressive = value; }
-    }
-
-    private int minTimeOffset;
-    public int MinTimeOffset {
-      get { return minTimeOffset; }
-      set { minTimeOffset = value; }
-    }
-
-    private int maxTimeOffset;
-    public int MaxTimeOffset {
-      get { return maxTimeOffset; }
-      set { maxTimeOffset = value; }
-    }
-
-    private LearningTask learningTask;
-    public LearningTask LearningTask {
-      get { return learningTask; }
-      set { learningTask = value; }
-    }
-
-    public Problem()
-      : base() {
-      dataset = new DataAnalysis.Dataset();
-      allowedInputVariables = new List<int>();
-      allowedTargetVariables = new List<int>();
-    }
-
-
-    public string GetVariableName(int index) {
-      return dataset.GetVariableName(index);
-    }
-
-    public override IView CreateView() {
-      return new ProblemView(this);
-    }
-
-    public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) {
-      XmlNode node = base.GetXmlNode(name, document, persistedObjects);
-      node.AppendChild(PersistenceManager.Persist("DataSet", dataset, document, persistedObjects));
-      XmlAttribute trainingSamplesStartAttr = document.CreateAttribute("TrainingSamplesStart");
-      trainingSamplesStartAttr.Value = TrainingSamplesStart.ToString();
-      XmlAttribute trainingSamplesEndAttr = document.CreateAttribute("TrainingSamplesEnd");
-      trainingSamplesEndAttr.Value = TrainingSamplesEnd.ToString();
-      XmlAttribute validationSamplesStartAttr = document.CreateAttribute("ValidationSamplesStart");
-      validationSamplesStartAttr.Value = ValidationSamplesStart.ToString();
-      XmlAttribute validationSamplesEndAttr = document.CreateAttribute("ValidationSamplesEnd");
-      validationSamplesEndAttr.Value = ValidationSamplesEnd.ToString();
-      XmlAttribute testSamplesStartAttr = document.CreateAttribute("TestSamplesStart");
-      testSamplesStartAttr.Value = TestSamplesStart.ToString();
-      XmlAttribute testSamplesEndAttr = document.CreateAttribute("TestSamplesEnd");
-      testSamplesEndAttr.Value = TestSamplesEnd.ToString();
-      XmlAttribute learningTaskAttr = document.CreateAttribute("LearningTask");
-      learningTaskAttr.Value = LearningTask.ToString();
-      XmlAttribute autoRegressiveAttr = document.CreateAttribute("AutoRegressive");
-      autoRegressiveAttr.Value = AutoRegressive.ToString();
-      XmlAttribute minTimeOffsetAttr = document.CreateAttribute("MinTimeOffset");
-      minTimeOffsetAttr.Value = MinTimeOffset.ToString();
-      XmlAttribute maxTimeOffsetAttr = document.CreateAttribute("MaxTimeOffset");
-      maxTimeOffsetAttr.Value = MaxTimeOffset.ToString();
-
-      node.Attributes.Append(trainingSamplesStartAttr);
-      node.Attributes.Append(trainingSamplesEndAttr);
-      node.Attributes.Append(validationSamplesStartAttr);
-      node.Attributes.Append(validationSamplesEndAttr);
-      node.Attributes.Append(testSamplesStartAttr);
-      node.Attributes.Append(testSamplesEndAttr);
-      node.Attributes.Append(learningTaskAttr);
-      node.Attributes.Append(autoRegressiveAttr);
-      node.Attributes.Append(minTimeOffsetAttr);
-      node.Attributes.Append(maxTimeOffsetAttr);
-
-      XmlElement targetVariablesElement = document.CreateElement("AllowedTargetVariables");
-      targetVariablesElement.InnerText = SemiColonSeparatedList(AllowedTargetVariables);
-      XmlElement inputVariablesElement = document.CreateElement("AllowedInputVariables");
-      inputVariablesElement.InnerText = SemiColonSeparatedList(AllowedInputVariables);
-      node.AppendChild(targetVariablesElement);
-      node.AppendChild(inputVariablesElement);
-      return node;
-    }
-
-    public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) {
-      base.Populate(node, restoredObjects);
-      dataset = (HeuristicLab.DataAnalysis.Dataset)PersistenceManager.Restore(node.SelectSingleNode("DataSet"), restoredObjects);
-      TrainingSamplesStart = int.Parse(node.Attributes["TrainingSamplesStart"].Value);
-      TrainingSamplesEnd = int.Parse(node.Attributes["TrainingSamplesEnd"].Value);
-      ValidationSamplesStart = int.Parse(node.Attributes["ValidationSamplesStart"].Value);
-      ValidationSamplesEnd = int.Parse(node.Attributes["ValidationSamplesEnd"].Value);
-      TestSamplesStart = int.Parse(node.Attributes["TestSamplesStart"].Value);
-      TestSamplesEnd = int.Parse(node.Attributes["TestSamplesEnd"].Value);
-      LearningTask = (LearningTask)Enum.Parse(typeof(LearningTask), node.Attributes["LearningTask"].Value);
-      AutoRegressive = bool.Parse(node.Attributes["AutoRegressive"].Value);
-      if (node.Attributes["MinTimeOffset"] != null)
-        MinTimeOffset = XmlConvert.ToInt32(node.Attributes["MinTimeOffset"].Value);
-      else MinTimeOffset = 0;
-      if (node.Attributes["MaxTimeOffset"] != null)
-        MaxTimeOffset = XmlConvert.ToInt32(node.Attributes["MaxTimeOffset"].Value);
-      else MaxTimeOffset = 0;
-
-      allowedTargetVariables.Clear();
-      foreach (string tok in node.SelectSingleNode("AllowedTargetVariables").InnerText.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries))
-        allowedTargetVariables.Add(int.Parse(tok));
-      allowedInputVariables.Clear();
-      foreach (string tok in node.SelectSingleNode("AllowedInputVariables").InnerText.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries))
-        allowedInputVariables.Add(int.Parse(tok));
-    }
-
-    private string SemiColonSeparatedList(List<int> xs) {
-      StringBuilder b = new StringBuilder();
-      foreach (int x in xs) {
-        b = b.Append(x).Append(";");
-      }
-      if (xs.Count > 0) b.Remove(b.Length - 1, 1); // remove last ';'
-      return b.ToString();
-    }
-  }
-}
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Server/3.3/DispatcherBase.cs
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Server/3.3/DispatcherBase.cs	(revision 2184)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Server/3.3/DispatcherBase.cs	(revision 2185)
@@ -39,5 +39,5 @@
 namespace HeuristicLab.CEDMA.Server {
   public abstract class DispatcherBase : IDispatcher {
-    private IStore store;
+    private IModelingDatabase database;
     private DataSet dataset;
     private List<int> allowedTargetVariables;
@@ -63,6 +63,6 @@
     }
 
-    public DispatcherBase(IStore store) {
-      this.store = store;
+    public DispatcherBase(IModelingDatabase database) {
+      this.database = database;
       allowedTargetVariables = new List<int>();
       activeInputVariables = new Dictionary<int, List<int>>();
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Server/3.3/ExecuterBase.cs
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Server/3.3/ExecuterBase.cs	(revision 2184)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Server/3.3/ExecuterBase.cs	(revision 2185)
@@ -39,4 +39,5 @@
 using System.Threading;
 using HeuristicLab.Modeling;
+using HeuristicLab.Modeling.SQLServerCompactBackend;
 
 namespace HeuristicLab.CEDMA.Server {
@@ -47,6 +48,6 @@
     protected IDispatcher Dispatcher {
       get { return dispatcher; }
-    }
-    private IStore store;
+    }    
+    private IModelingDatabase databaseService;
 
     private int maxActiveJobs;
@@ -60,8 +61,8 @@
     }
 
-    public ExecuterBase(IDispatcher dispatcher, IStore store) {
+    public ExecuterBase(IDispatcher dispatcher, IModelingDatabase databaseService) {
       maxActiveJobs = 10;
       this.dispatcher = dispatcher;
-      this.store = store;
+      this.databaseService = databaseService;
     }
 
@@ -85,48 +86,49 @@
 
     protected void StoreResults(IAlgorithm finishedAlgorithm) {
-      Entity modelEntity = new Entity(Ontology.CedmaNameSpace + Guid.NewGuid());
-      IModel model = finishedAlgorithm.Model;
-      List<Statement> statements = new List<Statement>();
-      statements.Add(new Statement(modelEntity, Ontology.InstanceOf, Ontology.TypeModel));
-      statements.Add(new Statement(modelEntity, Ontology.TargetVariable, new Literal(model.TargetVariable)));
-      statements.Add(new Statement(modelEntity, Ontology.Name, new Literal(finishedAlgorithm.Name)));
+      databaseService.Persist(finishedAlgorithm);
+      //Entity modelEntity = new Entity(Ontology.CedmaNameSpace + Guid.NewGuid());
+      //IModel model = finishedAlgorithm.Model;
+      //List<Statement> statements = new List<Statement>();
+      //statements.Add(new Statement(modelEntity, Ontology.InstanceOf, Ontology.TypeModel));
+      //statements.Add(new Statement(modelEntity, Ontology.TargetVariable, new Literal(model.TargetVariable)));
+      //statements.Add(new Statement(modelEntity, Ontology.Name, new Literal(finishedAlgorithm.Name)));
       
-      statements.Add(new Statement(modelEntity, Ontology.TrainingMeanSquaredError, new Literal(model.TrainingMeanSquaredError)));
-      statements.Add(new Statement(modelEntity, Ontology.ValidationMeanSquaredError, new Literal(model.ValidationMeanSquaredError)));
-      statements.Add(new Statement(modelEntity, Ontology.TestMeanSquaredError, new Literal(model.TestMeanSquaredError)));
-      statements.Add(new Statement(modelEntity, Ontology.TrainingCoefficientOfDetermination, new Literal(model.TrainingCoefficientOfDetermination)));
-      statements.Add(new Statement(modelEntity, Ontology.ValidationCoefficientOfDetermination, new Literal(model.ValidationCoefficientOfDetermination)));
-      statements.Add(new Statement(modelEntity, Ontology.TestCoefficientOfDetermination, new Literal(model.TestCoefficientOfDetermination)));
-      statements.Add(new Statement(modelEntity, Ontology.TrainingVarianceAccountedFor, new Literal(model.TrainingVarianceAccountedFor)));
-      statements.Add(new Statement(modelEntity, Ontology.ValidationVarianceAccountedFor, new Literal(model.ValidationVarianceAccountedFor)));
-      statements.Add(new Statement(modelEntity, Ontology.TestVarianceAccountedFor, new Literal(model.TestVarianceAccountedFor)));
-      statements.Add(new Statement(modelEntity, Ontology.TrainingMeanAbsolutePercentageError, new Literal(model.TrainingMeanAbsolutePercentageError)));
-      statements.Add(new Statement(modelEntity, Ontology.ValidationMeanAbsolutePercentageError, new Literal(model.ValidationMeanAbsolutePercentageError)));
-      statements.Add(new Statement(modelEntity, Ontology.TestMeanAbsolutePercentageError, new Literal(model.TestMeanAbsolutePercentageError)));
-      statements.Add(new Statement(modelEntity, Ontology.TrainingMeanAbsolutePercentageOfRangeError, new Literal(model.TrainingMeanAbsolutePercentageOfRangeError)));
-      statements.Add(new Statement(modelEntity, Ontology.ValidationMeanAbsolutePercentageOfRangeError, new Literal(model.ValidationMeanAbsolutePercentageOfRangeError)));
-      statements.Add(new Statement(modelEntity, Ontology.TestMeanAbsolutePercentageOfRangeError, new Literal(model.TestMeanAbsolutePercentageOfRangeError)));
+      //statements.Add(new Statement(modelEntity, Ontology.TrainingMeanSquaredError, new Literal(model.TrainingMeanSquaredError)));
+      //statements.Add(new Statement(modelEntity, Ontology.ValidationMeanSquaredError, new Literal(model.ValidationMeanSquaredError)));
+      //statements.Add(new Statement(modelEntity, Ontology.TestMeanSquaredError, new Literal(model.TestMeanSquaredError)));
+      //statements.Add(new Statement(modelEntity, Ontology.TrainingCoefficientOfDetermination, new Literal(model.TrainingCoefficientOfDetermination)));
+      //statements.Add(new Statement(modelEntity, Ontology.ValidationCoefficientOfDetermination, new Literal(model.ValidationCoefficientOfDetermination)));
+      //statements.Add(new Statement(modelEntity, Ontology.TestCoefficientOfDetermination, new Literal(model.TestCoefficientOfDetermination)));
+      //statements.Add(new Statement(modelEntity, Ontology.TrainingVarianceAccountedFor, new Literal(model.TrainingVarianceAccountedFor)));
+      //statements.Add(new Statement(modelEntity, Ontology.ValidationVarianceAccountedFor, new Literal(model.ValidationVarianceAccountedFor)));
+      //statements.Add(new Statement(modelEntity, Ontology.TestVarianceAccountedFor, new Literal(model.TestVarianceAccountedFor)));
+      //statements.Add(new Statement(modelEntity, Ontology.TrainingMeanAbsolutePercentageError, new Literal(model.TrainingMeanAbsolutePercentageError)));
+      //statements.Add(new Statement(modelEntity, Ontology.ValidationMeanAbsolutePercentageError, new Literal(model.ValidationMeanAbsolutePercentageError)));
+      //statements.Add(new Statement(modelEntity, Ontology.TestMeanAbsolutePercentageError, new Literal(model.TestMeanAbsolutePercentageError)));
+      //statements.Add(new Statement(modelEntity, Ontology.TrainingMeanAbsolutePercentageOfRangeError, new Literal(model.TrainingMeanAbsolutePercentageOfRangeError)));
+      //statements.Add(new Statement(modelEntity, Ontology.ValidationMeanAbsolutePercentageOfRangeError, new Literal(model.ValidationMeanAbsolutePercentageOfRangeError)));
+      //statements.Add(new Statement(modelEntity, Ontology.TestMeanAbsolutePercentageOfRangeError, new Literal(model.TestMeanAbsolutePercentageOfRangeError)));
 
-      for (int i = 0; i < finishedAlgorithm.Dataset.Columns; i++) {
-        try {
-          string variableName = finishedAlgorithm.Dataset.GetVariableName(i);
-          double qualImpact = model.GetVariableQualityImpact(variableName);
-          double evalImpact = model.GetVariableEvaluationImpact(variableName);
+      //for (int i = 0; i < finishedAlgorithm.Dataset.Columns; i++) {
+      //  try {
+      //    string variableName = finishedAlgorithm.Dataset.GetVariableName(i);
+      //    double qualImpact = model.GetVariableQualityImpact(variableName);
+      //    double evalImpact = model.GetVariableEvaluationImpact(variableName);
 
-          Entity inputVariableEntity = new Entity(Ontology.CedmaNameSpace + Guid.NewGuid());
-          statements.Add(new Statement(inputVariableEntity, Ontology.InstanceOf, Ontology.TypeVariableImpact));
-          statements.Add(new Statement(modelEntity, Ontology.HasInputVariable, inputVariableEntity));
-          statements.Add(new Statement(inputVariableEntity, Ontology.EvaluationImpact, new Literal(evalImpact)));
-          statements.Add(new Statement(inputVariableEntity, Ontology.QualityImpact, new Literal(qualImpact)));
-          statements.Add(new Statement(inputVariableEntity, Ontology.Name, new Literal(variableName)));
-        }
-        catch (ArgumentException) {
-          // ignore
-        }
-      }
+      //    Entity inputVariableEntity = new Entity(Ontology.CedmaNameSpace + Guid.NewGuid());
+      //    statements.Add(new Statement(inputVariableEntity, Ontology.InstanceOf, Ontology.TypeVariableImpact));
+      //    statements.Add(new Statement(modelEntity, Ontology.HasInputVariable, inputVariableEntity));
+      //    statements.Add(new Statement(inputVariableEntity, Ontology.EvaluationImpact, new Literal(evalImpact)));
+      //    statements.Add(new Statement(inputVariableEntity, Ontology.QualityImpact, new Literal(qualImpact)));
+      //    statements.Add(new Statement(inputVariableEntity, Ontology.Name, new Literal(variableName)));
+      //  }
+      //  catch (ArgumentException) {
+      //    // ignore
+      //  }
+      //}
 
-      byte[] serializedModel = PersistenceManager.SaveToGZip(model.Data);
-      statements.Add(new Statement(modelEntity, Ontology.SerializedData, new Literal(Convert.ToBase64String(serializedModel))));
-      store.AddRange(statements);
+      //byte[] serializedModel = PersistenceManager.SaveToGZip(model.Data);
+      //statements.Add(new Statement(modelEntity, Ontology.SerializedData, new Literal(Convert.ToBase64String(serializedModel))));
+      //store.AddRange(statements);
     }
 
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Server/3.3/GridExecuter.cs
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Server/3.3/GridExecuter.cs	(revision 2184)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Server/3.3/GridExecuter.cs	(revision 2185)
@@ -39,4 +39,5 @@
 using System.Threading;
 using HeuristicLab.Modeling;
+using HeuristicLab.Modeling.SQLServerCompactBackend;
 
 namespace HeuristicLab.CEDMA.Server {
@@ -57,6 +58,6 @@
     }
 
-    public GridExecuter(IDispatcher dispatcher, IStore store, IGridServer server)
-      : base(dispatcher, store) {
+    public GridExecuter(IDispatcher dispatcher,  IGridServer server, IModelingDatabase databaseService)
+      : base(dispatcher, store, databaseService) {
       this.jobManager = new JobManager(server);
       activeAlgorithms = new Dictionary<AsyncGridResult, IAlgorithm>();
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Server/3.3/HeuristicLab.CEDMA.Server-3.3.csproj
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Server/3.3/HeuristicLab.CEDMA.Server-3.3.csproj	(revision 2184)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Server/3.3/HeuristicLab.CEDMA.Server-3.3.csproj	(revision 2185)
@@ -153,4 +153,8 @@
       <Name>HeuristicLab.Grid-3.2</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Modeling.SQLServerCompactBackend\3.2\HeuristicLab.Modeling.SQLServerCompactBackend-3.2.csproj">
+      <Project>{9B4F7D05-CCE1-45BB-81D1-5D4925851901}</Project>
+      <Name>HeuristicLab.Modeling.SQLServerCompactBackend-3.2</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Modeling\3.2\HeuristicLab.Modeling-3.2.csproj">
       <Project>{80F7FADA-549D-4151-8856-79B620A50DBA}</Project>
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Server/3.3/Server.cs
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Server/3.3/Server.cs	(revision 2184)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Server/3.3/Server.cs	(revision 2185)
@@ -33,12 +33,10 @@
 using HeuristicLab.Grid.HiveBridge;
 using HeuristicLab.Core;
+using HeuristicLab.Modeling.SQLServerCompactBackend;
 
 namespace HeuristicLab.CEDMA.Server {
   public class Server : IViewable {
-    private static readonly string rdfFile = AppDomain.CurrentDomain.BaseDirectory + "rdf_store.db3";
-    private static readonly string rdfConnectionString = "sqlite:rdf:Data Source=\"" + rdfFile + "\"";
-
-    private ServiceHost host;
-    private Store store;
+    private static readonly string sqlServerCompactFile = AppDomain.CurrentDomain.BaseDirectory + "HeuristicLab.Modeling.database";
+    private static readonly string sqlServerCompactConnectionString = @"Data Source=" + sqlServerCompactFile;
 
     private IDispatcher dispatcher;
@@ -53,46 +51,10 @@
     }
 
-    private string cedmaServiceUrl;
-    public string CedmaServiceUrl {
-      get { return cedmaServiceUrl; }
-      set { cedmaServiceUrl = value; }
-    }
-
     public Server() {
-      IPAddress[] addresses = Dns.GetHostAddresses(Dns.GetHostName());
-      // windows XP returns the external ip on index 0 while windows vista returns the external ip as one of the last entries
-      // also if IPv6 protocol is installed we want to find an entry that is IPv4
-      int index = 0;
-      if (System.Environment.OSVersion.Version.Major >= 6) {
-        for (index = addresses.Length - 1; index >= 0; index--)
-          if (addresses[index].AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
-            break;
-      }
-      cedmaServiceUrl = "net.tcp://" + addresses[index] + ":8002/CEDMA";
-      store = new Store(rdfConnectionString);
-    }
-
-    public void Start() {
-      host = new ServiceHost(store, new Uri(cedmaServiceUrl));
-      ServiceThrottlingBehavior throttlingBehavior = new ServiceThrottlingBehavior();
-      throttlingBehavior.MaxConcurrentSessions = 20;
-      host.Description.Behaviors.Add(throttlingBehavior);
-      try {
-        NetTcpBinding binding = new NetTcpBinding();
-        binding.SendTimeout = new TimeSpan(10, 0, 0);
-        binding.MaxReceivedMessageSize = int.MaxValue;
-        binding.ReaderQuotas.MaxStringContentLength = int.MaxValue;
-        binding.ReaderQuotas.MaxArrayLength = int.MaxValue;
-        host.AddServiceEndpoint(typeof(IStore), binding, cedmaServiceUrl);
-        host.Open();
-      }
-      catch (CommunicationException ex) {
-        MessageBox.Show("An exception occurred: " + ex.Message);
-        host.Abort();
-      }
     }
 
     internal void Connect(string serverUrl) {
-      dispatcher = new SimpleDispatcher(store);
+      DatabaseService database = new DatabaseService(sqlServerCompactConnectionString)
+      dispatcher = new SimpleDispatcher(database);
       IGridServer gridServer = null;
       if (serverUrl.Contains("ExecutionEngine")) {
@@ -102,5 +64,5 @@
         gridServer = new GridServerProxy(serverUrl);
       }
-      executer = new GridExecuter(dispatcher, store, gridServer);
+      executer = new GridExecuter(dispatcher, gridServer,database);
       executer.Start();
     }
@@ -110,5 +72,4 @@
       return new ServerView(this);
     }
-
     #endregion
   }
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Server/3.3/SimpleDispatcher.cs
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Server/3.3/SimpleDispatcher.cs	(revision 2184)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.CEDMA.Server/3.3/SimpleDispatcher.cs	(revision 2185)
@@ -45,11 +45,9 @@
     }
 
-    private Random random;
-    private IStore store;
+    private Random random;    
     private Dictionary<int, List<AlgorithmConfiguration>> finishedAndDispatchedRuns;
 
-    public SimpleDispatcher(IStore store)
-      : base(store) {
-      this.store = store;
+    public SimpleDispatcher(IModelingDatabase database)
+      : base(database) {      
       random = new Random();
       finishedAndDispatchedRuns = new Dictionary<int, List<AlgorithmConfiguration>>();
@@ -103,50 +101,50 @@
 
     private void PopulateFinishedRuns() {
-      Dictionary<Entity, Entity> processedModels = new Dictionary<Entity, Entity>();
-      var datasetBindings = store
-        .Query(
-        "?Dataset <" + Ontology.InstanceOf + "> <" + Ontology.TypeDataSet + "> .", 0, 1)
-        .Select(x => (Entity)x.Get("Dataset"));
-
-      if (datasetBindings.Count() > 0) {
-        var datasetEntity = datasetBindings.ElementAt(0);
-
-        DataSet ds = new DataSet(store, datasetEntity);
-        var result = store
-          .Query(
-          "?Model <" + Ontology.TargetVariable + "> ?TargetVariable ." + Environment.NewLine +
-          "?Model <" + Ontology.Name + "> ?AlgoName .",
-          0, 1000)
-          .Select(x => new Resource[] { (Literal)x.Get("TargetVariable"), (Literal)x.Get("AlgoName"), (Entity)x.Get("Model") });
-
-        foreach (Resource[] row in result) {
-          Entity model = ((Entity)row[2]);
-          if (!processedModels.ContainsKey(model)) {
-            processedModels.Add(model, model);
-
-            string targetVariable = (string)((Literal)row[0]).Value;
-            string algoName = (string)((Literal)row[1]).Value;
-            int targetVariableIndex = ds.Problem.Dataset.GetVariableIndex(targetVariable);
-
-            var inputVariableLiterals = store
-              .Query(
-                "<" + model.Uri + "> <" + Ontology.HasInputVariable + "> ?InputVariable ." + Environment.NewLine +
-                "?InputVariable <" + Ontology.Name + "> ?Name .",
-                0, 1000)
-              .Select(x => (Literal)x.Get("Name"))
-              .Select(l => (string)l.Value)
-              .Distinct();
-
-            List<int> inputVariables = new List<int>();
-            foreach (string variableName in inputVariableLiterals) {
-              int variableIndex = ds.Problem.Dataset.GetVariableIndex(variableName);
-              inputVariables.Add(variableIndex);
-            }
-            if (!AlgorithmFinishedOrDispatched(targetVariableIndex, inputVariables.ToArray(), algoName)) {
-              AddDispatchedRun(targetVariableIndex, inputVariables.ToArray(), algoName);
-            }
-          }
-        }
-      }
+      //Dictionary<Entity, Entity> processedModels = new Dictionary<Entity, Entity>();
+      //var datasetBindings = store
+      //  .Query(
+      //  "?Dataset <" + Ontology.InstanceOf + "> <" + Ontology.TypeDataSet + "> .", 0, 1)
+      //  .Select(x => (Entity)x.Get("Dataset"));
+
+      //if (datasetBindings.Count() > 0) {
+      //  var datasetEntity = datasetBindings.ElementAt(0);
+
+      //  DataSet ds = new DataSet(store, datasetEntity);
+      //  var result = store
+      //    .Query(
+      //    "?Model <" + Ontology.TargetVariable + "> ?TargetVariable ." + Environment.NewLine +
+      //    "?Model <" + Ontology.Name + "> ?AlgoName .",
+      //    0, 1000)
+      //    .Select(x => new Resource[] { (Literal)x.Get("TargetVariable"), (Literal)x.Get("AlgoName"), (Entity)x.Get("Model") });
+
+      //  foreach (Resource[] row in result) {
+      //    Entity model = ((Entity)row[2]);
+      //    if (!processedModels.ContainsKey(model)) {
+      //      processedModels.Add(model, model);
+
+      //      string targetVariable = (string)((Literal)row[0]).Value;
+      //      string algoName = (string)((Literal)row[1]).Value;
+      //      int targetVariableIndex = ds.Problem.Dataset.GetVariableIndex(targetVariable);
+
+      //      var inputVariableLiterals = store
+      //        .Query(
+      //          "<" + model.Uri + "> <" + Ontology.HasInputVariable + "> ?InputVariable ." + Environment.NewLine +
+      //          "?InputVariable <" + Ontology.Name + "> ?Name .",
+      //          0, 1000)
+      //        .Select(x => (Literal)x.Get("Name"))
+      //        .Select(l => (string)l.Value)
+      //        .Distinct();
+
+      //      List<int> inputVariables = new List<int>();
+      //      foreach (string variableName in inputVariableLiterals) {
+      //        int variableIndex = ds.Problem.Dataset.GetVariableIndex(variableName);
+      //        inputVariables.Add(variableIndex);
+      //      }
+      //      if (!AlgorithmFinishedOrDispatched(targetVariableIndex, inputVariables.ToArray(), algoName)) {
+      //        AddDispatchedRun(targetVariableIndex, inputVariables.ToArray(), algoName);
+      //      }
+      //    }
+      //  }
+      //}
     }
 
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.DataAnalysis/3.2/Dataset.cs
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.DataAnalysis/3.2/Dataset.cs	(revision 2184)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.DataAnalysis/3.2/Dataset.cs	(revision 2185)
@@ -111,4 +111,7 @@
 
     private string[] variableNames;
+    public IEnumerable<string> VariableNames {
+      get { return variableNames; }
+    }
 
     public Dataset() {
@@ -123,4 +126,6 @@
       fireChangeEvents = true;
     }
+
+    
 
     public string GetVariableName(int variableIndex) {
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/Algorithm.cs
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/Algorithm.cs	(revision 2185)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/Algorithm.cs	(revision 2185)
@@ -0,0 +1,45 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Data.Linq;
+using System.Data.Linq.Mapping;
+using System.Text;
+
+namespace HeuristicLab.Modeling.SQLServerCompactBackend {
+  [Table(Name = "Algorithm")]
+  public class Algorithm {
+    public Algorithm() {
+    }
+
+    public Algorithm(string name)
+      : this() {
+      this.name = name;
+    }
+
+    public Algorithm(string name, string description)
+      : this(name) {
+      this.description = description;
+    }
+
+    private int id;
+    [Column(Storage = "id", IsPrimaryKey = true, IsDbGenerated = true)]
+    public int Id {
+      get { return this.id; }
+      private set { this.id = value; }
+    }
+
+    private string name;
+    [Column(Storage = "name", CanBeNull = false)]
+    public string Name {
+      get { return this.name; }
+      set { this.name = value; }
+    }
+
+    private string description;
+    [Column(Storage = "description", CanBeNull = true)]
+    public string Description {
+      get { return this.description; }
+      set { this.description = value; }
+    }
+  }
+}
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/InputVariable.cs
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/InputVariable.cs	(revision 2185)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/InputVariable.cs	(revision 2185)
@@ -0,0 +1,59 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Data.Linq;
+using System.Data.Linq.Mapping;
+using System.Text;
+
+namespace HeuristicLab.Modeling.SQLServerCompactBackend {
+  [Table(Name = "InputVariable")]
+  public class InputVariable {
+    public InputVariable() {
+      this.model = default(EntityRef<Model>);
+      this.variable = default(EntityRef<Variable>);
+    }
+
+    public InputVariable(Model model, Variable variable)
+      : base() {
+      this.model.Entity = model;
+      this.variable.Entity = variable;
+    }
+
+    private int variableId;
+    [Column(Storage = "variableId", IsPrimaryKey = true)]
+    public int VariableId {
+      get { return this.variableId; }
+      private set {
+        if (variableId != value) {
+          if (variable.HasLoadedOrAssignedValue)
+            throw new ForeignKeyReferenceAlreadyHasValueException();
+          variableId = value;
+        }
+      }
+    }
+
+    private EntityRef<Variable> variable;
+    [Association(Storage = "variable", ThisKey = "VariableId", OtherKey = "Id", IsForeignKey = true)]
+    public Variable Variable {
+      get { return variable.Entity; }
+    }
+
+    private int modelId;
+    [Column(Storage = "modelId", IsPrimaryKey = true)]
+    public int ModelId {
+      get { return this.modelId; }
+      private set {
+        if (modelId != value) {
+          if (model.HasLoadedOrAssignedValue)
+            throw new ForeignKeyReferenceAlreadyHasValueException();
+          modelId = value;
+        }
+      }
+    }
+
+    private EntityRef<Model> model;
+    [Association(Storage = "model", ThisKey = "ModelId", OtherKey = "Id", IsForeignKey = true)]
+    public Model Model {
+      get { return model.Entity; }
+    }
+  }
+}
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/InputVariableResult.cs
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/InputVariableResult.cs	(revision 2185)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/InputVariableResult.cs	(revision 2185)
@@ -0,0 +1,88 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Data.Linq;
+using System.Data.Linq.Mapping;
+using System.Text;
+
+namespace HeuristicLab.Modeling.SQLServerCompactBackend {
+  [Table(Name="InputVariableResult")]
+  public class InputVariableResult {
+    public InputVariableResult() {
+      this.model = default(EntityRef<Model>);
+      this.variable = default(EntityRef<Variable>);
+      this.result = default(EntityRef<Result>);
+    }
+
+    public InputVariableResult(InputVariable inputVariable, Result result, double value)
+      : this() {
+      this.variable.Entity = inputVariable.Variable;
+      this.model.Entity = inputVariable.Model;
+      this.result.Entity = result;
+      this.value = value;
+    }
+
+    private int variableId;
+    [Column(Storage = "variableId", IsPrimaryKey = true)]
+    public int VariableId {
+      get { return this.variableId; }
+      private set {
+        if (variableId != value) {
+          if (variable.HasLoadedOrAssignedValue)
+            throw new ForeignKeyReferenceAlreadyHasValueException();
+          variableId = value;
+        }
+      }
+    }
+
+    private EntityRef<Variable> variable;
+    [Association(Storage = "variable", ThisKey = "VariableId", OtherKey = "Id", IsForeignKey = true)]
+    public Variable Variable {
+      get { return variable.Entity; }
+    }
+
+    private int modelId;
+    [Column(Storage = "modelId", IsPrimaryKey = true)]
+    public int ModelId {
+      get { return this.modelId; }
+      private set {
+        if (modelId != value) {
+          if (model.HasLoadedOrAssignedValue)
+            throw new ForeignKeyReferenceAlreadyHasValueException();
+          modelId = value;
+        }
+      }
+    }
+
+    private EntityRef<Model> model;
+    [Association(Storage = "model", ThisKey = "ModelId", OtherKey = "Id", IsForeignKey = true)]
+    public Model Model {
+      get { return model.Entity; }
+    }
+
+    private int resultId;
+    [Column(Storage = "resultId", IsPrimaryKey = true)]
+    public int ResultId {
+      get { return this.resultId; }
+      private set {
+        if (resultId != value) {
+          if (result.HasLoadedOrAssignedValue)
+            throw new ForeignKeyReferenceAlreadyHasValueException();
+          resultId = value;
+        }
+      }
+    }
+
+    private EntityRef<Result> result;
+    [Association(Storage = "result", ThisKey = "ResultId", OtherKey = "Id", IsForeignKey = true)]
+    public Result Result {
+      get { return result.Entity; }
+    }
+
+    private double value;
+    [Column(Storage = "value", CanBeNull = false)]
+    public double Value {
+      get { return this.value; }
+      set { this.value = value; }
+    }
+  }
+}
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/Model.cs
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/Model.cs	(revision 2185)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/Model.cs	(revision 2185)
@@ -0,0 +1,141 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Data.Linq;
+using System.Data.Linq.Mapping;
+using System.Text;
+
+namespace HeuristicLab.Modeling.SQLServerCompactBackend {
+  [Table(Name = "Model")]
+  public class Model {
+    public Model() {
+      targetVariable = default(EntityRef<Variable>);
+      algorithm = default(EntityRef<Algorithm>);
+    }
+
+    public Model(Variable targetVariable, Algorithm algorithm, byte[] model)
+      : this() {
+      this.TargetVariable = targetVariable;
+      this.Algorithm = algorithm;
+      this.modelData = model;
+    }
+
+    private int id;
+    [Column(Storage = "id", IsPrimaryKey = true, IsDbGenerated = true)]
+    public int Id {
+      get { return this.id; }
+      private set { this.id = value; }
+    }
+
+    private byte[] modelData;
+    [Column(Storage = "model", DbType = "image", CanBeNull = false)]
+    public byte[] ModelData {
+      get { return this.modelData; }
+      set { this.modelData = value; }
+    }
+
+    private int algorithmId;
+    [Column(Storage = "algorithmId", CanBeNull = false)]
+    public int AlgorithmId {
+      get { return this.algorithmId; }
+      private set {
+        if (algorithmId != value) {
+          if (algorithm.HasLoadedOrAssignedValue)
+            throw new ForeignKeyReferenceAlreadyHasValueException();
+          algorithmId = value;
+        }
+      }
+    }
+
+    private EntityRef<Algorithm> algorithm;
+    [Association(Storage = "algorithm", ThisKey = "AlgorithmId", OtherKey = "Id", IsForeignKey = true)]
+    public Algorithm Algorithm {
+      get { return this.algorithm.Entity; }
+      set {
+        Algorithm previousValue = algorithm.Entity;
+        if (previousValue != value || (!algorithm.HasLoadedOrAssignedValue)) {
+          if (previousValue != null) {
+            algorithm.Entity = null;
+          }
+          algorithm.Entity = value;
+          if (value != null) {
+            algorithmId = value.Id;
+          }
+        }
+      }
+    }
+
+    private int targetVariableId;
+    [Column(Storage = "targetVariableId", CanBeNull = false)]
+    public int TargetVariableId {
+      get { return this.targetVariableId; }
+      private set {
+        if (targetVariableId != value) {
+          if (targetVariable.HasLoadedOrAssignedValue)
+            throw new ForeignKeyReferenceAlreadyHasValueException();
+          targetVariableId = value;
+        }
+      }
+    }
+
+    private EntityRef<Variable> targetVariable;
+    [Association(Storage = "targetVariable", ThisKey = "TargetVariableId", OtherKey = "Id", IsForeignKey = true)]
+    public Variable TargetVariable {
+      get { return this.targetVariable.Entity; }
+      set {
+        Variable previousValue = targetVariable.Entity;
+        if (previousValue != value || (!targetVariable.HasLoadedOrAssignedValue)) {
+          if (previousValue != null) {
+            targetVariable.Entity = null;
+          }
+          targetVariable.Entity = value;
+          if (value != null) {
+            targetVariableId = value.Id;
+          } 
+        }
+      }
+    }
+
+    private int trainingSamplesStart;
+    [Column(Storage = "trainingSamplesStart", CanBeNull = false)]
+    public int TrainingSamplesStart {
+      get { return this.trainingSamplesStart; }
+      set { this.trainingSamplesStart = value; }
+    }
+
+    private int trainingSamplesEnd;
+    [Column(Storage = "trainingSamplesEnd", CanBeNull = false)]
+    public int TrainingSamplesEnd {
+      get { return this.trainingSamplesEnd; }
+      set { this.trainingSamplesEnd = value; }
+    }
+
+    private int validationSamplesStart;
+    [Column(Storage = "validationSamplesStart", CanBeNull = false)]
+    public int ValidationSamplesStart {
+      get { return this.validationSamplesStart; }
+      set { this.validationSamplesStart = value; }
+    }
+
+    private int validationSamplesEnd;
+    [Column(Storage = "validationSamplesEnd", CanBeNull = false)]
+    public int ValidationSamplesEnd {
+      get { return this.validationSamplesEnd; }
+      set { this.validationSamplesEnd = value; }
+    }
+
+    private int testSamplesStart;
+    [Column(Storage = "testSamplesStart", CanBeNull = false)]
+    public int TestSamplesStart {
+      get { return this.testSamplesStart; }
+      set { this.testSamplesStart = value; }
+    }
+
+    private int testSamplesEnd;
+    [Column(Storage = "testSamplesEnd", CanBeNull = false)]
+    public int TestSamplesEnd {
+      get { return this.testSamplesEnd; }
+      set { this.testSamplesEnd = value; }
+    }
+  }
+}
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/ModelResult.cs
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/ModelResult.cs	(revision 2185)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/ModelResult.cs	(revision 2185)
@@ -0,0 +1,92 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Data.Linq;
+using System.Data.Linq.Mapping;
+using System.Text;
+
+namespace HeuristicLab.Modeling.SQLServerCompactBackend {
+  [Table(Name = "ModelResult")]
+  public class ModelResult {
+    public ModelResult() {
+      this.model = default(EntityRef<Model>);
+      this.result = default(EntityRef<Result>);
+    }
+
+    public ModelResult(Model model, Result result, double value)
+      : this() {
+      this.Model = model;
+      this.Result = result;
+      this.value = value;
+    }
+
+    private double value;
+    [Column(Storage = "value", CanBeNull = false)]
+    public double Value {
+      get { return this.value; }
+      set { this.value = value; }
+    }
+
+    private int modelId;
+    [Column(Storage = "modelId", CanBeNull = false)]
+    public int ModelId {
+      get { return this.modelId; }
+      private set {
+        if (modelId != value) {
+          if (model.HasLoadedOrAssignedValue)
+            throw new ForeignKeyReferenceAlreadyHasValueException();
+        }
+        modelId = value;
+      }
+    }
+
+    private EntityRef<Model> model;
+    [Association(Storage = "model", ThisKey = "ModelId", OtherKey = "Id", IsForeignKey = true)]
+    public Model Model {
+      get { return this.model.Entity; }
+      set {
+        Model previousValue = model.Entity;
+        if (previousValue != value || (!model.HasLoadedOrAssignedValue)) {
+          if (previousValue != null) {
+            model.Entity = null;
+          }
+          model.Entity = value;
+          if (value != null) {
+            modelId = value.Id;
+          } 
+        }
+      }
+    }
+
+    private int resultId;
+    [Column(Storage = "resultId", CanBeNull = false)]
+    public int ResultId {
+      get { return this.resultId; }
+      private set {
+        if (resultId != value) {
+          if (result.HasLoadedOrAssignedValue)
+            throw new ForeignKeyReferenceAlreadyHasValueException();
+        }
+        modelId = value;
+      }
+    }
+
+    private EntityRef<Result> result;
+    [Association(Storage = "result", ThisKey = "ResultId", OtherKey = "Id", IsForeignKey = true)]
+    public Result Result {
+      get { return this.result.Entity; }
+      set {
+        Result previousValue = result.Entity;
+        if (previousValue != value || (!model.HasLoadedOrAssignedValue)) {
+          if (previousValue != null) {
+            result.Entity = null;
+          }
+          result.Entity = value;
+          if (value != null) {
+            resultId = value.Id;
+          }
+        }
+      }
+    }
+
+  }
+}
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/Problem.cs
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/Problem.cs	(revision 2185)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/Problem.cs	(revision 2185)
@@ -0,0 +1,34 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Data.Linq;
+using System.Data.Linq.Mapping;
+using System.Text;
+
+using HeuristicLab.DataAnalysis;
+
+namespace HeuristicLab.Modeling.SQLServerCompactBackend {
+  [Table(Name = "Problem")]
+  public class Problem {
+    public Problem() {
+    }
+
+    public Problem(Dataset dataset)
+      : this() {
+      this.dataset = dataset;
+    }
+
+    private int id;
+    [Column(Storage = "id", IsPrimaryKey = true, IsDbGenerated = true)]
+    public int Id {
+      get { return this.id; }
+      private set { this.id = value; }
+    }
+
+    private Dataset dataset;
+    [Column(Storage = "dataset", DbType = "image", CanBeNull = false)]
+    public Dataset Dataset {
+      get { return this.dataset; }
+      private set { this.dataset = value; }
+    }
+  }
+}
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/Result.cs
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/Result.cs	(revision 2185)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/Result.cs	(revision 2185)
@@ -0,0 +1,33 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Data.Linq;
+using System.Data.Linq.Mapping;
+using System.Text;
+
+namespace HeuristicLab.Modeling.SQLServerCompactBackend {
+  [Table(Name = "Result")]
+  public class Result {
+    public Result() {
+    }
+
+    public Result(string name)
+      : this() {
+      this.name = name;
+    }
+
+    private int id;
+    [Column(Storage = "id", IsPrimaryKey = true, IsDbGenerated = true)]
+    public int Id {
+      get { return this.id; }
+      private set { this.id = value; }
+    }
+
+    private string name;
+    [Column(Storage = "name", CanBeNull = false)]
+    public string Name {
+      get { return this.name; }
+      private set { this.name = value; }
+    }
+  }
+}
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/Variable.cs
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/Variable.cs	(revision 2185)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DataObjects/Variable.cs	(revision 2185)
@@ -0,0 +1,33 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Data.Linq;
+using System.Data.Linq.Mapping;
+using System.Text;
+
+namespace HeuristicLab.Modeling.SQLServerCompactBackend {
+  [Table(Name = "Variable")]
+  public class Variable {
+    public Variable() {
+    }
+
+    public Variable(string name)
+      : this() {
+      this.name = name;
+    }
+
+    private int id;
+    [Column(Storage = "id", IsPrimaryKey = true, IsDbGenerated = true)]
+    public int Id {
+      get { return this.id; }
+      private set { this.id = value; }
+    }
+
+    private string name;
+    [Column(Storage = "name", CanBeNull = false)]
+    public string Name {
+      get { return this.name; }
+      private set { this.name = value; }
+    }
+  }
+}
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DatabaseService.cs
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DatabaseService.cs	(revision 2185)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/DatabaseService.cs	(revision 2185)
@@ -0,0 +1,184 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Reflection;
+
+using HeuristicLab.Core;
+using HeuristicLab.DataAnalysis;
+using HeuristicLab.GP.StructureIdentification;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Modeling.SQLServerCompactBackend {
+  public class DatabaseService : IModelingDatabase {
+
+    private readonly string connection;
+    public DatabaseService(string connection) {
+      this.connection = connection;
+      using (ModelingDataContext ctx = new ModelingDataContext(connection)) {
+        if (!ctx.DatabaseExists())
+          ctx.CreateDatabase();
+      }
+    }
+
+    private void EmptyDatabase() {
+      using (ModelingDataContext ctx = new ModelingDataContext(connection)) {
+        ctx.DeleteDatabase();
+        ctx.CreateDatabase();
+      }
+    }
+
+    public void Persist(IAlgorithm algorithm) {
+      int trainingSamplesStart = ((IntData)algorithm.Engine.GlobalScope.GetVariableValue("TrainingSamplesStart", false)).Data;
+      int trainingSamplesEnd = ((IntData)algorithm.Engine.GlobalScope.GetVariableValue("TrainingSamplesEnd", false)).Data;
+      int validationSamplesStart = ((IntData)algorithm.Engine.GlobalScope.GetVariableValue("ValidationSamplesStart", false)).Data;
+      int validationSamplesEnd = ((IntData)algorithm.Engine.GlobalScope.GetVariableValue("ValidationSamplesEnd", false)).Data;
+      int testSamplesStart = ((IntData)algorithm.Engine.GlobalScope.GetVariableValue("TestSamplesStart", false)).Data;
+      int testSamplesEnd = ((IntData)algorithm.Engine.GlobalScope.GetVariableValue("TestSamplesEnd", false)).Data;
+
+      GetOrCreateProblem(algorithm.Dataset);
+      Dictionary<string, Variable> variables = GetAllVariables();
+      Algorithm algo = GetOrCreateAlgorithm(algorithm.Name, algorithm.Description);
+      Variable target = variables[algorithm.Model.TargetVariable];
+      Model model;
+
+      using (ModelingDataContext ctx = new ModelingDataContext(connection)) {
+        model = new Model(target, algo, PersistenceManager.SaveToGZip(algorithm.Model.Data));
+        model.TrainingSamplesStart = trainingSamplesStart;
+        model.TrainingSamplesEnd = trainingSamplesEnd;
+        model.ValidationSamplesStart = validationSamplesStart;
+        model.ValidationSamplesEnd = validationSamplesEnd;
+        model.TestSamplesStart = testSamplesStart;
+        model.TestSamplesEnd = testSamplesEnd;
+
+        ctx.Models.InsertOnSubmit(model);
+        foreach (string inputVariable in algorithm.Model.InputVariables) {
+          ctx.InputVariables.InsertOnSubmit(new InputVariable(model, variables[inputVariable]));
+        }
+        ctx.SubmitChanges();
+      }
+
+      using (ModelingDataContext ctx = new ModelingDataContext(connection)) {
+        //get all double properties to save as modelResult
+        IEnumerable<PropertyInfo> modelResultInfos = algorithm.Model.GetType().GetProperties().Where(
+          info => info.PropertyType == typeof(double));
+        foreach (PropertyInfo modelResultInfo in modelResultInfos) {
+          Result result = GetOrCreateResult(modelResultInfo.Name);
+          double value = (double)modelResultInfo.GetValue(algorithm.Model, null);
+          ctx.ModelResults.InsertOnSubmit(new ModelResult(model, result, value));
+        }
+
+        IEnumerable<MethodInfo> inputVariableResultInfos = algorithm.Model.GetType().GetMethods().Where(
+          info => info.GetParameters().Count() == 1 &&
+             info.GetParameters()[0].ParameterType == typeof(string) &&
+             info.GetParameters()[0].Name == "variableName" &&
+             info.ReturnParameter.ParameterType == typeof(double) &&
+             info.Name.StartsWith("Get"));
+        foreach (MethodInfo inputVariableResultInfo in inputVariableResultInfos) {
+          Result result = GetOrCreateResult(inputVariableResultInfo.Name.Substring(3));
+          foreach (InputVariable variable in ctx.InputVariables.Where(iv => iv.Model == model)) {
+            double value = (double)inputVariableResultInfo.Invoke(algorithm.Model, new object[] { variable.Variable.Name });
+            ctx.InputVariableResults.InsertOnSubmit(new InputVariableResult(variable, result, value));
+          }
+        }
+        ctx.SubmitChanges();
+      }
+
+    }
+
+    #region Problem
+
+    public Dataset GetDataset() {
+      using (ModelingDataContext ctx = new ModelingDataContext(connection)) {
+        if (ctx.Problems.Count() != 1)
+          throw new InvalidOperationException("Could not get dataset. No or more than one problems are persisted in the database.");
+
+        Problem problem = ctx.Problems.ElementAt(0);
+        return problem.Dataset;
+      }
+    }
+
+    public Problem GetOrCreateProblem(Dataset dataset) {
+      Problem problem;
+      using (ModelingDataContext ctx = new ModelingDataContext(connection)) {
+        if (ctx.Problems.Count() == 0)
+          problem = PersistProblem(dataset);
+        else
+          problem = ctx.Problems.Single();
+        if (problem.Dataset.ToString() != dataset.ToString())
+          throw new InvalidOperationException("Could not persist dataset. The database already contains a different dataset.");
+      }
+      return problem;
+    }
+
+    private Problem PersistProblem(Dataset dataset) {
+      Problem problem;
+      using (ModelingDataContext ctx = new ModelingDataContext(connection)) {
+        if (ctx.Problems.Count() != 0)
+          throw new InvalidOperationException("Could not persist dataset. A dataset is already saved in the database.");
+        problem = new Problem(dataset);
+        ctx.Problems.InsertOnSubmit(problem);
+        foreach (string variable in dataset.VariableNames) {
+          ctx.Variables.InsertOnSubmit(new Variable(variable));
+        }
+        ctx.SubmitChanges();
+      }
+      return problem;
+    }
+
+    #endregion
+
+    #region Algorithm
+    public Algorithm GetOrCreateAlgorithm(string name, string description) {
+      Algorithm algorithm;
+      using (ModelingDataContext ctx = new ModelingDataContext(connection)) {
+        var algorithms = from algo in ctx.Algorithms
+                         where algo.Name == name && algo.Description == description
+                         select algo;
+        if (algorithms.Count() == 0) {
+          algorithm = new Algorithm(name, description);
+          ctx.Algorithms.InsertOnSubmit(algorithm);
+          ctx.SubmitChanges();
+        } else if (algorithms.Count() == 1)
+          algorithm = algorithms.Single();
+        else
+          throw new ArgumentException("Could not get Algorithm. More than one algorithm with the name " + name + " are saved in database.");
+      }
+      return algorithm;
+    }
+    #endregion
+
+    #region Variables
+    public Dictionary<string, Variable> GetAllVariables() {
+      Dictionary<string, Variable> dict = new Dictionary<string, Variable>();
+      using (ModelingDataContext ctx = new ModelingDataContext(connection)) {
+        dict = ctx.Variables.ToDictionary<Variable, string>(delegate(Variable v) { return v.Name; });
+      }
+      return dict;
+    }
+    #endregion
+
+    #region Result
+    public Result GetOrCreateResult(string name) {
+      Result result;
+      using (ModelingDataContext ctx = new ModelingDataContext(connection)) {
+        var results = from r in ctx.Results
+                      where r.Name == name
+                      select r;
+        if (results.Count() == 0) {
+          result = new Result(name);
+          ctx.Results.InsertOnSubmit(result);
+          ctx.SubmitChanges();
+        } else if (results.Count() == 1)
+          result = results.Single();
+        else
+          throw new ArgumentException("Could not get result. More than one result with the name " + name + " are saved in database.");
+      }
+      return result;
+    }
+
+    #endregion
+
+
+  }
+}
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/HeuristicLab.Modeling.SQLServerCompactBackend-3.2.csproj
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/HeuristicLab.Modeling.SQLServerCompactBackend-3.2.csproj	(revision 2184)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/HeuristicLab.Modeling.SQLServerCompactBackend-3.2.csproj	(revision 2185)
@@ -95,4 +95,16 @@
       <Name>HeuristicLab.DataAnalysis-3.2</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Data\3.2\HeuristicLab.Data-3.2.csproj">
+      <Project>{F473D9AF-3F09-4296-9F28-3C65118DAFFA}</Project>
+      <Name>HeuristicLab.Data-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.GP.StructureIdentification\3.3\HeuristicLab.GP.StructureIdentification-3.3.csproj">
+      <Project>{74223A32-C726-4978-BE78-37113A18373C}</Project>
+      <Name>HeuristicLab.GP.StructureIdentification-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Modeling\3.2\HeuristicLab.Modeling-3.2.csproj">
+      <Project>{80F7FADA-549D-4151-8856-79B620A50DBA}</Project>
+      <Name>HeuristicLab.Modeling-3.2</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
       <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
@@ -101,14 +113,15 @@
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="Algorithm.cs" />
-    <Compile Include="InputVariable.cs" />
-    <Compile Include="InputVariableResult.cs" />
-    <Compile Include="Model.cs" />
+    <Compile Include="DatabaseService.cs" />
+    <Compile Include="DataObjects\Algorithm.cs" />
+    <Compile Include="DataObjects\InputVariable.cs" />
+    <Compile Include="DataObjects\InputVariableResult.cs" />
+    <Compile Include="DataObjects\Model.cs" />
     <Compile Include="ModelingDataContext.cs" />
-    <Compile Include="ModelResult.cs" />
-    <Compile Include="Problem.cs" />
+    <Compile Include="DataObjects\ModelResult.cs" />
+    <Compile Include="DataObjects\Problem.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Result.cs" />
-    <Compile Include="Variable.cs" />
+    <Compile Include="DataObjects\Result.cs" />
+    <Compile Include="DataObjects\Variable.cs" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/ModelingDataContext.cs
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/ModelingDataContext.cs	(revision 2184)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling.SQLServerCompactBackend/3.2/ModelingDataContext.cs	(revision 2185)
@@ -8,10 +8,4 @@
 namespace HeuristicLab.Modeling.SQLServerCompactBackend {
   public class ModelingDataContext : DataContext{
-
-    public static string connectionString;
-
-    public ModelingDataContext() : this(connectionString) {      
-    }
-
     public ModelingDataContext(string connection)
       : base(connection) {
@@ -39,5 +33,4 @@
     }
 
-
     public Table<InputVariableResult> InputVariableResults {
       get { return GetTable<InputVariableResult>(); }
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling/3.2/HeuristicLab.Modeling-3.2.csproj
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling/3.2/HeuristicLab.Modeling-3.2.csproj	(revision 2184)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling/3.2/HeuristicLab.Modeling-3.2.csproj	(revision 2185)
@@ -83,4 +83,5 @@
   <ItemGroup>
     <Compile Include="ClassificationProblemInjector.cs" />
+    <Compile Include="IModelingDatabase.cs" />
     <Compile Include="VariableImpactCalculatorBase.cs" />
     <Compile Include="VariableEvaluationImpactCalculator.cs" />
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling/3.2/IModel.cs
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling/3.2/IModel.cs	(revision 2184)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling/3.2/IModel.cs	(revision 2185)
@@ -30,4 +30,5 @@
     Dataset Dataset { get; }
     string TargetVariable { get; }
+    IEnumerable<string> InputVariables { get; }
     double TrainingMeanSquaredError { get; }
     double ValidationMeanSquaredError { get; }
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling/3.2/IModelingDatabase.cs
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling/3.2/IModelingDatabase.cs	(revision 2185)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling/3.2/IModelingDatabase.cs	(revision 2185)
@@ -0,0 +1,10 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace HeuristicLab.Modeling {
+  public interface IModelingDatabase {
+    void Persist(IAlgorithm algorithm);
+  }
+}
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling/3.2/Model.cs
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling/3.2/Model.cs	(revision 2184)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab.Modeling/3.2/Model.cs	(revision 2185)
@@ -40,4 +40,14 @@
       get { return targetVariable; }
       set { targetVariable = value; }
+    }
+
+    private List<string> inputVariables = new List<string>();
+    public IEnumerable<string> InputVariables {
+      get { return inputVariables; }
+    }
+
+    public void AddInputVariables(string variableName) {
+      if (!inputVariables.Contains(variableName))
+        inputVariables.Add(variableName);
     }
 
@@ -122,5 +132,5 @@
     public double GetVariableQualityImpact(string variableName) {
       if (variableQualityImpacts.ContainsKey(variableName)) return variableQualityImpacts[variableName];
-      else throw new ArgumentException("Impact of variable "+variableName+" is not available.");
+      else throw new ArgumentException("Impact of variable " + variableName + " is not available.");
     }
 
Index: branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab/CopyAssemblies.cmd
===================================================================
--- branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab/CopyAssemblies.cmd	(revision 2184)
+++ branches/HeuristicLab.Modeling Database Backend/sources/HeuristicLab/CopyAssemblies.cmd	(revision 2185)
@@ -75,4 +75,5 @@
 copy "%SolutionDir%\HeuristicLab.Modeling\3.2\%Outdir%\HeuristicLab.Modeling-3.2.dll" .\plugins
 copy "%SolutionDir%\HeuristicLab.Modeling\3.3\%Outdir%\HeuristicLab.Modeling-3.3.dll" .\plugins
+copy "%SolutionDir%\HeuristicLab.Modeling.SQLServerCompactBackend\3.2\%Outdir%\HeuristicLab.Modeling.SQLServerCompactBackend-3.2.dll" .\plugins
 copy "%SolutionDir%\HeuristicLab.Operators\3.2\%Outdir%\HeuristicLab.Operators-3.2.dll" .\plugins
 copy "%SolutionDir%\HeuristicLab.Operators\3.3\%Outdir%\HeuristicLab.Operators-3.3.dll" .\plugins
