Index: trunk/sources/HeuristicLab 3.3 Services.sln
===================================================================
--- trunk/sources/HeuristicLab 3.3 Services.sln	(revision 4273)
+++ trunk/sources/HeuristicLab 3.3 Services.sln	(revision 4276)
@@ -14,4 +14,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Services.Deployment-3.3.Tests", "HeuristicLab.Services.Deployment\3.3\Tests\HeuristicLab.Services.Deployment-3.3.Tests.csproj", "{421D9CCA-5A48-4813-AB9C-ED7025F9CC35}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Services.OKB.DataAccess-3.3", "HeuristicLab.Services.OKB.DataAccess\3.3\HeuristicLab.Services.OKB.DataAccess-3.3.csproj", "{E36BE58F-F3CE-40BB-9AB3-9F9E30AD5CCF}"
 EndProject
 Global
@@ -61,4 +63,16 @@
 		{421D9CCA-5A48-4813-AB9C-ED7025F9CC35}.Release|x86.ActiveCfg = Release|x86
 		{421D9CCA-5A48-4813-AB9C-ED7025F9CC35}.Release|x86.Build.0 = Release|x86
+		{E36BE58F-F3CE-40BB-9AB3-9F9E30AD5CCF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{E36BE58F-F3CE-40BB-9AB3-9F9E30AD5CCF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{E36BE58F-F3CE-40BB-9AB3-9F9E30AD5CCF}.Debug|x64.ActiveCfg = Debug|x64
+		{E36BE58F-F3CE-40BB-9AB3-9F9E30AD5CCF}.Debug|x64.Build.0 = Debug|x64
+		{E36BE58F-F3CE-40BB-9AB3-9F9E30AD5CCF}.Debug|x86.ActiveCfg = Debug|x86
+		{E36BE58F-F3CE-40BB-9AB3-9F9E30AD5CCF}.Debug|x86.Build.0 = Debug|x86
+		{E36BE58F-F3CE-40BB-9AB3-9F9E30AD5CCF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{E36BE58F-F3CE-40BB-9AB3-9F9E30AD5CCF}.Release|Any CPU.Build.0 = Release|Any CPU
+		{E36BE58F-F3CE-40BB-9AB3-9F9E30AD5CCF}.Release|x64.ActiveCfg = Release|x64
+		{E36BE58F-F3CE-40BB-9AB3-9F9E30AD5CCF}.Release|x64.Build.0 = Release|x64
+		{E36BE58F-F3CE-40BB-9AB3-9F9E30AD5CCF}.Release|x86.ActiveCfg = Release|x86
+		{E36BE58F-F3CE-40BB-9AB3-9F9E30AD5CCF}.Release|x86.Build.0 = Release|x86
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/Authentication.cs
===================================================================
--- trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/Authentication.cs	(revision 4276)
+++ trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/Authentication.cs	(revision 4276)
@@ -0,0 +1,34 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Runtime.Serialization;
+
+namespace HeuristicLab.Services.OKB.DataAccess {
+
+  [DataContract]
+  public class Authentication {
+    [DataMember]
+    public User User { get; set; }
+    [DataMember]
+    public Client Client { get; set; }
+  }
+
+}
Index: trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/ExperimentKit.cs
===================================================================
--- trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/ExperimentKit.cs	(revision 4276)
+++ trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/ExperimentKit.cs	(revision 4276)
@@ -0,0 +1,35 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Runtime.Serialization;
+
+namespace HeuristicLab.Services.OKB.DataAccess {
+
+  [DataContract]
+  public class ExperimentKit {
+    [DataMember]
+    public Algorithm Algorithm { get; set; }
+
+    [DataMember]
+    public Problem Problem { get; set; }
+  }
+
+}
Index: trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/HeuristicLab.Services.OKB.DataAccess-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/HeuristicLab.Services.OKB.DataAccess-3.3.csproj	(revision 4276)
+++ trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/HeuristicLab.Services.OKB.DataAccess-3.3.csproj	(revision 4276)
@@ -0,0 +1,205 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{E36BE58F-F3CE-40BB-9AB3-9F9E30AD5CCF}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Services.OKB.DataAccess</RootNamespace>
+    <AssemblyName>HeuristicLab.Services.OKB.DataAccess-3.3</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>bin\Release\HeuristicLab.Services.OKB.DataAccess-3.3.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <DocumentationFile>
+    </DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <DocumentationFile>bin\x64\Release\HeuristicLab.Services.OKB.DataAccess-3.3.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <DocumentationFile>bin\x86\Release\HeuristicLab.Services.OKB.DataAccess-3.3.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Runtime.Serialization">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Authentication.cs" />
+    <Compile Include="ExperimentKit.cs" />
+    <None Include="OKB.designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>OKB.dbml</DependentUpon>
+    </None>
+    <Compile Include="OKB.generated.cs">
+      <DependentUpon>OKB.tt</DependentUpon>
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+    </Compile>
+    <Compile Include="OKB_Methods.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <None Include="Properties\AssemblyInfo.frame" />
+    <Compile Include="Properties\Settings.Designer.cs">
+      <DependentUpon>Settings.settings</DependentUpon>
+      <AutoGen>True</AutoGen>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="app.config" />
+    <None Include="HeuristicLab.snk" />
+    <None Include="L2ST4.ttinclude" />
+    <None Include="OKB.dbml">
+      <Generator>MSLinqToSQLGenerator</Generator>
+      <LastGenOutput>OKB.designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="OKB.dbml.layout">
+      <DependentUpon>OKB.dbml</DependentUpon>
+    </None>
+    <None Include="OKB.tt">
+      <Generator>TextTemplatingFileGenerator</Generator>
+      <LastGenOutput>OKB.generated.cs</LastGenOutput>
+    </None>
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{3259AA49-8AA1-44D3-9025-A0B520596A8C}" />
+    <Service Include="{508349B6-6B84-4DF5-91F0-309BEEBAD82D}" />
+    <Service Include="{B4F97281-0DBD-4835-9ED8-7DFB966E87FF}" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/L2ST4.ttinclude
===================================================================
--- trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/L2ST4.ttinclude	(revision 4276)
+++ trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/L2ST4.ttinclude	(revision 4276)
@@ -0,0 +1,853 @@
+﻿<#@ assembly name="System.Core"
+#><#@ assembly name="System.Data.Linq"
+#><#@ assembly name="EnvDTE"
+#><#@ assembly name="System.Xml"
+#><#@ assembly name="System.Xml.Linq"
+#><#@ import namespace="System"
+#><#@ import namespace="System.CodeDom"
+#><#@ import namespace="System.CodeDom.Compiler"
+#><#@ import namespace="System.Collections.Generic"
+#><#@ import namespace="System.Data.Linq"
+#><#@ import namespace="System.Data.Linq.Mapping"
+#><#@ import namespace="System.IO"
+#><#@ import namespace="System.Linq"
+#><#@ import namespace="System.Reflection"
+#><#@ import namespace="System.Text"
+#><#@ import namespace="System.Xml.Linq"
+#><#@ import namespace="Microsoft.VisualStudio.TextTemplating"
+#><#+
+// L2ST4 - LINQ to SQL templates for T4 v0.82 - http://www.codeplex.com/l2st4
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+// This source code is made available under the terms of the Microsoft Public License (MS-PL)
+
+// DBML Database element > code DataContext class
+class Data
+{
+	public XNamespace NS = "http://schemas.microsoft.com/linqtosql/dbml/2007";
+	public String BaseClassName { get; private set; }
+	public String ConnectSettingsObject { get; private set; }
+	public String ConnectSettingsProperty { get; private set; }
+	public String ContextName { get; private set; }
+	public String ContextNamespace { get; set; }
+	public String DatabaseName { get; private set; }
+	public String DbmlFileName { get; private set; }
+	public String EntityBase { get; private set; }
+	public String EntityNamespace { get; set; }
+	public List<Function> Functions { get; private set; }
+	public List<FunctionClass> FunctionClasses { get; private set; }
+	public bool Serialization { get; private set; }
+	public string SpecifiedContextNamespace { get; private set; }
+	public string SpecifiedEntityNamespace { get; private set; }
+	public TypeAttributes TypeAttributes { get; private set; }
+	public List<Table> Tables { get; private set; }
+	public List<TableClass> TableClasses { get; private set; }
+	
+	public Data(String dbmlFileName) {
+		DbmlFileName = dbmlFileName;
+		if (!File.Exists(DbmlFileName))
+			throw new Exception(String.Format("DBML file '{0}' could not be found.", DbmlFileName));
+		XElement xe = XDocument.Load(DbmlFileName).Root;
+		TableClasses = new List<TableClass>();
+		FunctionClasses = new List<FunctionClass>();
+		
+		foreach(XElement connection in xe.Elements(NS + "Connection")) {
+			ConnectSettingsObject = (String) connection.Attribute("SettingsObjectName");
+			ConnectSettingsProperty = (String) connection.Attribute("SettingsPropertyName");
+		}
+		BaseClassName = (String) xe.Attribute("BaseType") ?? "DataContext";
+		ContextName = (String) xe.Attribute("Class");
+		ContextNamespace = SpecifiedContextNamespace = (String) xe.Attribute("ContextNamespace");
+		DatabaseName = (String) xe.Attribute("Name") ?? "";
+		EntityBase = (String) xe.Attribute("EntityBase");
+		EntityNamespace = SpecifiedEntityNamespace = (String) xe.Attribute("EntityNamespace");
+		Serialization = (String) xe.Attribute("Serialization") == "Unidirectional";
+		TypeAttributes = Class.DecodeAccess((String) xe.Attribute("AccessModifier")) | Class.DecodeModifier((String) xe.Attribute("Modifier"));
+		Tables = (from t in xe.Elements(NS + "Table")
+			select new Table(this, t)).ToList();
+		Functions = (from f in xe.Elements(NS + "Function")
+			select new Function(this, f)).ToList();
+	}
+		
+	static internal Type GetType(String typeName, bool canBeNull) {
+		Type type = null;
+		switch(typeName) {
+			case "System.Xml.Linq.XElement": type = typeof(System.Xml.Linq.XElement); break;
+			case "System.Data.Linq.Binary": type = typeof(System.Data.Linq.Binary); break;
+			default: type = Type.GetType(typeName); break;
+		}
+		if (type == null)
+			type = new TypeStub(typeName);
+		if (type.IsValueType && canBeNull)
+			type = typeof(Nullable<>).MakeGenericType(type);
+		return type;
+	}
+}
+
+// DBML Table element > Base entity class, events & property on DataContext class
+class Table
+{
+	public TableClass BaseClass {
+		get { return Classes.First(); }
+	}
+	public IEnumerable<TableClass> Classes {
+		get { return Data.TableClasses.Where(c => c.Table == this); }
+	}
+	public Data Data { get; private set; }
+	private String member;
+	public String Member {
+		get { return member ?? Name; }
+		set { member = value; }
+	}
+	public String Name { get; set; }
+	public List<TableOperation> Operations { get; private set; }
+
+	public Table(Data data, XElement xe) {
+		Data = data;
+		Name = (String) xe.Attribute("Name");
+		Member = (String) xe.Attribute("Member");
+		Data.TableClasses.AddRange(from c in xe.Elements(Data.NS + "Type")
+			select new TableClass(this, c));
+		Operations = new List<TableOperation>();
+		foreach(OperationType operationType in Enum.GetValues(typeof(OperationType)))
+			Operations.AddRange((from o in xe.Elements(Data.NS + operationType.ToString() + "Function")
+				select new TableOperation(this, o)).ToList());
+	}
+}
+
+// DBML Type element > Entity class, subclasses or stored procedure return type
+class Class
+{
+	public Class SuperClass { get; protected set; }
+	public List<Column> Columns { get; private set; }
+	public Data Data {get; private set; }
+	public String Id { get; private set; }
+	public String InheritanceCode { get; private set; }
+	public Boolean IsInheritanceDefault { get; private set; }
+	public Boolean IsSerializable {
+		get { return (TypeAttributes & TypeAttributes.VisibilityMask) == TypeAttributes.Public; }
+	}
+	protected String name;
+	public virtual String Name {
+		get { return name; }
+		set { name = value; }
+	}
+	public String QualifiedName {
+		get { return (String.IsNullOrEmpty(Data.EntityNamespace) || (Data.EntityNamespace == Data.ContextNamespace))
+				? Name : Data.EntityNamespace + '.' + Name; }
+	}
+	public TypeAttributes TypeAttributes { get; private set; }
+	
+	public Class(Data data, XElement xe) {
+		Data = data;
+		Id = (String) xe.Attribute("Id");
+		InheritanceCode = (String) xe.Attribute("InheritanceCode");
+		IsInheritanceDefault = (Boolean ?) xe.Attribute("IsInheritanceDefault") ?? false;
+		Name = (String) xe.Attribute("Name");
+		TypeAttributes = DecodeAccess((String) xe.Attribute("AccessModifier")) | DecodeModifier((String) xe.Attribute("Modifier"));
+		Columns = (from c in xe.Elements(Data.NS + "Column")
+			select new Column(this, c)).ToList();
+	}
+	
+	internal static TypeAttributes DecodeAccess(String access) {
+		switch(access) {
+			case "Private": return TypeAttributes.NestedPrivate;
+			case "Internal": return TypeAttributes.NestedAssembly;
+			case "Protected": return TypeAttributes.NestedFamily;
+			case "ProtectedInternal": return TypeAttributes.NestedFamORAssem;
+			default: return TypeAttributes.Public;
+		}
+	}
+	
+	internal static TypeAttributes DecodeModifier(String modifier) {
+		switch(modifier) {
+			case "Abstract": return TypeAttributes.Abstract;
+			case "Sealed": return TypeAttributes.Sealed;
+			default: return TypeAttributes.Class;
+		}
+	}
+}
+
+// DBML Type element > Classes and subclasses that map to tables
+class TableClass : Class
+{
+	public List<Association> Associations { get; private set; }
+	public Boolean HasPrimaryKey {
+		get { return Columns.Any(c => c.IsPrimaryKey); }
+	}
+	public override String Name { get; set; }
+	public IList<Column> PrimaryKey {
+		get { return Columns.Where(c => c.IsPrimaryKey).ToList(); }
+	}
+	public MemberAttributes PropertyChangeAccess {
+		get { return ((TypeAttributes & TypeAttributes.Sealed) != 0) ? MemberAttributes.Private | MemberAttributes.Final : MemberAttributes.Public; }
+	}
+	public IEnumerable<TableClass> Subclasses {
+		get { return Table.Data.TableClasses.Where(c => c.SuperClass == this); }
+	}
+	public Table Table { get; private set; }
+
+	public TableClass(TableClass superClass, XElement xe) : this(superClass.Table, xe) {
+		SuperClass = superClass;
+	}
+
+	public TableClass(Table table, XElement xe) : base(table.Data, xe) {
+		Table = table;
+		Associations = (from a in xe.Elements(Data.NS + "Association")
+			select new Association(this, a)).ToList();
+		Table.Data.TableClasses.AddRange(from c in xe.Elements(Data.NS + "Type")
+			select new TableClass(this, c));
+	}
+}
+
+// DBML Type > Classes that map to stored procedure return types
+class FunctionClass : Class
+{
+	public Function Function { get; set; }
+	
+	public FunctionClass(Function function, XElement xe) : base(function.Data, xe) {
+		Function = function;
+	}
+}
+
+// DBML type Column > Properties on a class
+class Column
+{
+	private String member, typeName, storage;
+
+	private AutoSync autoSync;
+	public AutoSync AutoSync {
+		get {
+			if (IsDbGenerated)
+				if (IsPrimaryKey)
+					return AutoSync.OnInsert;
+				else
+					return AutoSync.Always;
+			return autoSync;
+		}
+		private set { autoSync = value; }
+	}
+	public Boolean CanBeNull { get; private set; }
+	public Class Class { get; private set; }
+	public String DbType { get; private set; }
+	public String Expression { get; private set; }
+	private Boolean isDbGenerated;
+	public Boolean IsDbGenerated {
+		get { return (!String.IsNullOrEmpty(Expression) || IsVersion) ? true : isDbGenerated;  }
+		private set { isDbGenerated = value; }
+	}
+	public Boolean IsDelayLoaded { get; private set; }
+	public Boolean IsDiscriminator { get; private set; }
+	public List<Association> ForeignKeyAssociations {
+		get {
+			if (Class is TableClass) {
+				return ((TableClass)Class).Associations.Where(a => a.ThisKey.Contains(this) && a.IsForeignKey).ToList();
+			}
+			else
+				return new List<Association>();
+		}
+	}
+	public Boolean IsPrimaryKey { get; private set; }
+	private Boolean isReadOnly;
+	public Boolean IsReadOnly {
+		get { return (Class.Data.Serialization) ? false : isReadOnly; }
+		private set { isReadOnly = value; }
+	}
+	public Boolean IsVersion { get; private set; }
+	public String Member {
+		get { return member + ((member == Class.Name) ? "1" : ""); }
+		set { member = value; }
+	}
+	public MemberAttributes MemberAttributes { get; private set; }
+	public String Name { get; private set; }
+	public String Storage {
+		get { return String.IsNullOrEmpty(storage) ? "_" + Member : storage; }
+		set { storage = value; }
+	}
+	public Type StorageType {
+		get { return (IsDelayLoaded) ? typeof(Link<>).MakeGenericType(Type) : Type; }
+	}
+	public String StorageValue {
+		get { return (IsDelayLoaded) ? Storage + ".Value" : Storage; }
+	}
+	public Type Type {
+		get { return Data.GetType(typeName, CanBeNull); }
+	}
+	private UpdateCheck updateCheck;
+	public UpdateCheck UpdateCheck {
+		get { return (IsReadOnly) ? UpdateCheck.Never : updateCheck; }
+		private set { updateCheck = value; }
+	}
+	
+	public Column(Class class1, XElement xe) {
+		Class = class1;
+		Name = (String) xe.Attribute("Name") ?? "";
+		Member = (String) xe.Attribute("Member") ?? Name;
+		typeName = xe.Attribute("Type").Value;
+		CanBeNull = (Boolean?) xe.Attribute("CanBeNull") ?? false;
+		DbType = (String) xe.Attribute("DbType") ?? "";
+		Expression = (String) xe.Attribute("Expression") ?? "";
+		IsDbGenerated = (Boolean?) xe.Attribute("IsDbGenerated") ?? (IsVersion);
+		IsDelayLoaded = (Boolean?) xe.Attribute("IsDelayLoaded") ?? false;
+		IsDiscriminator = (Boolean?) xe.Attribute("IsDiscriminator") ?? false;
+		IsPrimaryKey = (Boolean?) xe.Attribute("IsPrimaryKey") ?? false;
+		IsReadOnly = (Boolean?) xe.Attribute("IsReadOnly") ?? false;
+		IsVersion = (Boolean?) xe.Attribute("IsVersion") ?? false;
+		Storage = (String) xe.Attribute("Storage") ?? "";
+		AutoSync autoSyncDefault = (IsDbGenerated) ? AutoSync.OnInsert : AutoSync.Default;
+		AutoSync = Util.ParseEnum((String) xe.Attribute("AutoSync"), (IsVersion) ? AutoSync.Always : autoSyncDefault);
+		UpdateCheck = Util.ParseEnum((String) xe.Attribute("UpdateCheck"), (IsVersion || IsPrimaryKey) ? UpdateCheck.Never : UpdateCheck.Always);
+		MemberAttributes = Util.DecodeMemberAccess((String) xe.Attribute("AccessModifier")) | Util.DecodeMemberModifier((String) xe.Attribute("Modifier"));
+	}
+}
+
+// DBML Association element > EntitySet or EntityRef between two table-mapped classes
+class Association
+{
+	private TableClass thisClass;
+	private String typeName, storage;
+
+	public Association OtherSide {
+		get { return Type.Associations.Find(a => a.Name == Name && a != this); }
+	}
+	public Boolean DeleteOnNull { get; private set; }
+	public String DeleteRule { get; private set; }
+	public Boolean IsForeignKey { get; private set; }
+	public Boolean IsMany { get; private set; }
+	public Boolean IsSerializable {
+		get { return ((MemberAttributes & MemberAttributes.AccessMask) == MemberAttributes.Public); }
+	}
+	public Boolean IsUnique {
+		get { return (!IsMany && !IsForeignKey); }
+	}
+	public Boolean ManagesKeys {
+		get { return !(IsMany || (OtherSide == null) || !IsForeignKey); }
+	}
+	public String Member { get; private set; }
+	public MemberAttributes MemberAttributes { get; private set; }
+	public String Name { get; private set; }
+	public IList<Column> OtherKey {
+		get { return OtherKeyMembers.Select(o => Type.Columns.Single(c => c.Member == o)).ToList(); }
+	}
+	private String[] otherKeyMembers;
+	public String[] OtherKeyMembers {
+		get { return (otherKeyMembers != null) ? otherKeyMembers : Type.PrimaryKey.Select(p => p.Member).ToArray(); }
+		set { otherKeyMembers = value; }
+	}
+	public String Storage { get { return storage ?? "_" + Member; } }
+	public IList<Column> ThisKey {
+		get { return ThisKeyMembers.Select(o => thisClass.Columns.Single(c => c.Member == o)).ToList(); }
+	}
+	private String[] thisKeyMembers;
+	public String[] ThisKeyMembers {
+		get { return (thisKeyMembers != null) ? thisKeyMembers : thisClass.PrimaryKey.Select(p => p.Member).ToArray(); }
+		set { thisKeyMembers = value; }
+	}
+	public TableClass Type {
+		get { return thisClass.Table.Data.TableClasses.Find(c => c.Name == typeName); }
+	}
+	
+	public Association(TableClass thisClass, XElement xe) {
+		this.thisClass = thisClass;
+		typeName = (String) xe.Attribute("Type");
+		String thisKey = ((String) xe.Attribute("ThisKey"));
+		if (thisKey != null)
+			thisKeyMembers = thisKey.Split(',');
+		storage = (String) xe.Attribute("Storage");
+		String otherKey = ((String) xe.Attribute("OtherKey"));
+		if (otherKey != null)
+			otherKeyMembers = otherKey.Split(',');
+		DeleteOnNull = (Boolean?) xe.Attribute("DeleteOnNull") ?? false;
+		DeleteRule = (String) xe.Attribute("DeleteRule");
+		IsForeignKey = (xe.Attribute("IsForeignKey") != null);
+		Member = (String) xe.Attribute("Member");
+		MemberAttributes = Util.DecodeMemberAccess((String) xe.Attribute("AccessModifier")) | Util.DecodeMemberModifier((String) xe.Attribute("Modifier"));
+		Name = (String) xe.Attribute("Name");
+		String cardinality = (String) xe.Attribute("Cardinality");
+		IsMany = (cardinality == null) ? !IsForeignKey : (cardinality.Equals("Many"));
+	}
+}
+
+// DBML Function element (stored procedure) > Method on DataContext
+class Function
+{
+	public List<Class> Classes { get; private set; }
+	public Data Data { get; private set; }
+	private Boolean? hasMultipleResults = null;
+	public Boolean HasMultipleResults {
+		get { return (hasMultipleResults.HasValue) ? hasMultipleResults.Value : Classes.Count() > 1; }
+	}
+	public String ID { get; private set; }
+	public Boolean IsComposable { get; private set; }
+	public MemberAttributes MemberAttributes { get; private set; }
+	public String Method { get; private set; }
+	public String Name { get; private set; }
+	public List<Parameter> Parameters { get; private set; }
+	public Return Return { get; private set; }
+	public CodeTypeReference ReturnType {
+		get {
+			if (Return != null)
+				return new CodeTypeReference(Return.Type);
+			else
+				if (HasMultipleResults)
+					return new CodeTypeReference(typeof(IMultipleResults));
+				else {
+					CodeTypeReference typeRef = new CodeTypeReference(typeof(ISingleResult<>));
+					typeRef.TypeArguments.Add(new CodeTypeReference(Classes[0].QualifiedName));
+					return typeRef;
+				}
+		}
+	}
+	
+	public Function(Data data, XElement xe) {
+		Data = data;
+		String hasMultiResultsElement = (String) xe.Attribute("HasMultipleResults");
+		if (hasMultiResultsElement != null)
+			hasMultipleResults = Boolean.Parse(hasMultiResultsElement);
+		ID = (String) xe.Attribute("Id");
+		IsComposable = (Boolean ?) xe.Attribute("IsComposable") ?? false;
+		Name = (String) xe.Attribute("Name");
+		Method = (String) xe.Attribute("Method");
+		MemberAttributes = Util.DecodeMemberAccess((String) xe.Attribute("AccessModifier")) | Util.DecodeMemberModifier((String) xe.Attribute("Modifier"));
+		Parameters = (from p in xe.Elements(Data.NS + "Parameter")
+			select new Parameter(this, p)).ToList();
+		Return = (from r in xe.Elements(Data.NS + "Return")
+			select new Return(this, r)).SingleOrDefault();
+		Classes = new List<Class>();
+		foreach(XElement fxe in xe.Elements(Data.NS + "ElementType")) {
+			String idRef = (String) fxe.Attribute("IdRef");
+			if (idRef == null) {
+				var functionClass = new FunctionClass(this, fxe);
+				Classes.Add(functionClass);
+				Data.FunctionClasses.Add(functionClass);
+			}
+			else
+				Classes.Add(Data.TableClasses.Single(c => c.Id == idRef));
+		}
+	}
+}
+
+// Function return type -> Method return type
+class Return
+{
+	private String typeName;
+	public String DbType { get; private set; }
+	public Function Function { get; private set; }
+	public Type Type {
+		get { return Data.GetType(typeName, false); }
+	}
+	
+	public Return(Function function, XElement xe) {
+		Function = function;
+		DbType = (String) xe.Attribute("DbType");
+		typeName = (String) xe.Attribute("Type");
+	}
+}
+
+public enum ParameterDirection { In, Out, InOut };
+public enum OperationType { Insert, Update, Delete };
+public enum ArgumentVersion { Original, New };
+
+// Function parameter -> Method parameter
+class Parameter
+{
+	private String typeName;
+	public String DbType { get; private set; }
+	public Function Function { get; private set; }
+	public String Name { get; private set; }
+	public String DbName { get; private set; }
+	public ParameterDirection Direction { get; private set; }
+	public Type Type {
+		get { return Data.GetType(typeName, true); }
+	}
+	
+	public Parameter(Function function, XElement xe) {
+		Function = function;
+		DbName = (String) xe.Attribute("Name");
+		Name = (String) xe.Attribute("Parameter") ?? DbName;
+		DbType = (String) xe.Attribute("DbType");
+		typeName = (String) xe.Attribute("Type");
+		Direction = Util.ParseEnum((String) xe.Attribute("Direction"), ParameterDirection.In);
+	}
+}
+
+// Functions associated with a table's CUD operations
+class TableOperation
+{
+	private String functionID;
+	private Function function;
+	public List<Argument> Arguments { get; private set; }
+	public OperationType Type { get; private set; }
+	public Function Function {
+		get {
+			if ((function == null) && (!String.IsNullOrEmpty(functionID)))
+				function = Table.Data.Functions.Where(f => f.ID == functionID).SingleOrDefault();
+			return function;
+		}
+		set {
+			function = value;
+			functionID = null;
+		}
+	}
+	public Table Table { get; private set; }
+	public TableOperation(Table table, XElement xe) {
+		Table = table;
+		functionID = (String) xe.Attribute("FunctionId");
+		Type = (OperationType) Enum.Parse(typeof(OperationType), xe.Name.LocalName.Replace("Function",""));
+		Arguments = (from a in xe.Elements(Table.Data.NS + "Argument") select new Argument(this, a)).ToList();
+	}
+}
+
+// Argument to a function
+class Argument
+{
+	private String parameterName;
+	private Parameter parameter;
+	public TableOperation TableOperation;
+	public Parameter Parameter {
+		get {
+			if ((parameter == null) && (!String.IsNullOrEmpty(parameterName)))
+				parameter = TableOperation.Function.Parameters.Single(p => p.Name == parameterName);
+			return parameter;
+		}
+		set {
+			parameter = value;
+			parameterName = null;
+		}
+	}
+	public String Member { get; private set; }
+	public ArgumentVersion Version { get; private set; }
+	
+	public Argument(TableOperation tableOperation, XElement xe) {
+		TableOperation = tableOperation;
+		parameterName = (String) xe.Attribute("Parameter");
+		Member = (String) xe.Attribute("Member");
+		Version = Util.ParseEnum((String) xe.Attribute("Version"), ArgumentVersion.New);
+	}
+}
+
+abstract class CodeLanguage
+{
+	public CodeDomProvider CodeDomProvider { get; protected set; }
+	public abstract String GetAccess(MemberAttributes memberAttributes);
+	public abstract String GetAccess(TypeAttributes typeAttributes);
+	public abstract String GetModifier(MemberAttributes memberAttributes);
+	public abstract String GetModifier(TypeAttributes typeAttributes);
+	
+	public String Format(Type type) {
+		return Format(new CodeTypeReference(type));
+	}
+	
+	public virtual String ShortenTypeRef(String typeRef) {
+		return (typeRef.LastIndexOf('.') != 6) ? typeRef.Replace("System.Data.Linq.","") : typeRef.Replace("System.","");
+	}
+	
+	public String Format(CodeTypeReference codeTypeRef) {
+		return ShortenTypeRef(CodeDomProvider.GetTypeOutput(codeTypeRef));
+	}
+	
+	public abstract String Format(ParameterDirection direction);
+	
+	public String Format(MemberAttributes memberAttributes) {
+		return GetAccess(memberAttributes) + GetModifier(memberAttributes);
+	}
+
+	public String Format(TypeAttributes typeAttributes) {
+		return GetAccess(typeAttributes) + GetModifier(typeAttributes);
+	}
+}
+
+class CSharpCodeLanguage : CodeLanguage
+{
+	public CSharpCodeLanguage() {
+		CodeDomProvider = new Microsoft.CSharp.CSharpCodeProvider();
+	}
+	
+	public override String Format(ParameterDirection direction) {
+		switch(direction) {
+			case ParameterDirection.InOut: return "ref ";
+			case ParameterDirection.Out: return "out ";
+			default: return "";
+		}
+	}
+
+	public override String ShortenTypeRef(String typeRef) {
+		if (typeRef.StartsWith("System.Nullable<"))
+			typeRef = typeRef.Replace("System.Nullable<","").Replace(">","?");
+		return base.ShortenTypeRef(typeRef);
+	}
+
+	public override String GetAccess(MemberAttributes memberAttributes) {
+		switch(memberAttributes & MemberAttributes.AccessMask) {
+			case MemberAttributes.Private: return "private ";
+			case MemberAttributes.Public: return "public ";
+			case MemberAttributes.Family: return "protected ";
+			case MemberAttributes.Assembly: return "internal ";
+			case MemberAttributes.FamilyAndAssembly: return "protected internal ";
+			default: return memberAttributes.ToString();
+		}
+	}
+
+	public override String GetAccess(TypeAttributes typeAttributes) {
+		switch(typeAttributes & TypeAttributes.VisibilityMask) {
+			case TypeAttributes.NestedPrivate: return "private ";
+			case TypeAttributes.NestedAssembly: return "internal ";
+			case TypeAttributes.NestedFamily: return "protected ";
+			case TypeAttributes.NestedFamORAssem: return "protected internal ";
+			default: return "public ";
+		}
+	}
+
+	public override String GetModifier(MemberAttributes memberAttributes) {
+		switch(memberAttributes & MemberAttributes.ScopeMask) {
+			case MemberAttributes.Final: return "";
+			case MemberAttributes.Abstract: return "abstract ";
+			case MemberAttributes.Override: return "override ";
+			default: return "virtual ";
+		}
+	}
+	
+	public override String GetModifier(TypeAttributes typeAttributes) {
+		if ((typeAttributes & TypeAttributes.Abstract) != 0) return "abstract ";
+		if ((typeAttributes & TypeAttributes.Sealed) != 0) return "sealed ";
+		return "";
+	}
+}
+
+class VBCodeLanguage : CodeLanguage
+{
+	public VBCodeLanguage() {
+		CodeDomProvider = new Microsoft.VisualBasic.VBCodeProvider();
+	}
+	
+	public override String Format(ParameterDirection direction) {
+		switch(direction) {
+			case ParameterDirection.InOut: return "ByRef ";
+			case ParameterDirection.Out: return "ByRef ";
+			default: return "";
+		}
+	}
+
+	public override String GetAccess(MemberAttributes memberAttributes) {
+		switch(memberAttributes & MemberAttributes.AccessMask) {
+			case MemberAttributes.Private: return "Private ";
+			case MemberAttributes.Public: return "Public ";
+			case MemberAttributes.Family: return "Protected ";
+			case MemberAttributes.Assembly: return "Friend ";
+			case MemberAttributes.FamilyAndAssembly: return "Protected Friend ";
+			default: return memberAttributes.ToString();
+		}
+	}
+	
+	public override String GetAccess(TypeAttributes typeAttributes) {
+		switch(typeAttributes & TypeAttributes.VisibilityMask) {
+			case TypeAttributes.NestedPrivate: return "Private ";
+			case TypeAttributes.NestedAssembly: return "Friend ";
+			case TypeAttributes.NestedFamily: return "Protected ";
+			case TypeAttributes.NestedFamORAssem: return "protected internal ";
+			default: return "Public ";
+		}
+	}
+
+	public override String GetModifier(MemberAttributes memberAttributes) {
+		switch(memberAttributes & MemberAttributes.ScopeMask) {
+			case MemberAttributes.Final: return "";
+			case MemberAttributes.Abstract: return "MustOverride ";
+			case MemberAttributes.Override: return "Override ";
+			default: return "Overridable ";
+		}
+	}
+	
+	public override String GetModifier(TypeAttributes typeAttributes) {
+		if ((typeAttributes & TypeAttributes.Abstract) != 0) return "MustInherit ";
+		if ((typeAttributes & TypeAttributes.Sealed) != 0) return "NotInheritable ";
+		return "";
+	}
+}
+
+// Manager class records the various blocks so it can split them up
+class Manager
+{
+	private struct Block {
+		public String Name;
+		public int Start, Length;
+	}
+	
+	private List<Block> blocks = new List<Block>();
+	private Block currentBlock;
+	private Block footerBlock = new Block();
+	private Block headerBlock = new Block();
+	private ITextTemplatingEngineHost host;
+	private ManagementStrategy strategy;
+	private StringBuilder template;
+	public String OutputPath { get; set; }
+	
+	public Manager(ITextTemplatingEngineHost host, StringBuilder template, bool commonHeader) {
+		this.host = host;
+		this.template = template;
+		OutputPath = String.Empty;
+		strategy = ManagementStrategy.Create(host);		
+	}
+		
+	public void StartBlock(String name) {
+		currentBlock = new Block { Name = name, Start = template.Length };
+	}
+
+	public void StartFooter() {
+		footerBlock.Start = template.Length;
+	}
+	
+	public void EndFooter() {
+		footerBlock.Length = template.Length - footerBlock.Start;
+	}
+	
+	public void StartHeader() {
+		headerBlock.Start = template.Length;
+	}
+	
+	public void EndHeader() {
+		headerBlock.Length = template.Length - headerBlock.Start;
+	}	
+
+	public void EndBlock() {
+		currentBlock.Length = template.Length - currentBlock.Start;
+		blocks.Add(currentBlock);
+	}
+		
+	public void Process(bool split) {
+		String header = template.ToString(headerBlock.Start, headerBlock.Length);
+		String footer = template.ToString(footerBlock.Start, footerBlock.Length);
+		blocks.Reverse();		
+		foreach(Block block in blocks) {
+			String fileName = Path.Combine(OutputPath, block.Name);
+			if (split) {
+				String content = header + template.ToString(block.Start, block.Length) + footer;
+				strategy.CreateFile(fileName, content);
+				template.Remove(block.Start, block.Length);
+			} else {
+				strategy.DeleteFile(fileName);
+			}
+		}
+	}
+
+	public string GetCustomToolNamespace(string fileName) {
+		return strategy.GetCustomToolNamespace(fileName);
+	}
+	
+	public string DefaultProjectNamespace {
+		get { return strategy.DefaultProjectNamespace; }
+	}
+}
+
+class ManagementStrategy
+{
+	internal static ManagementStrategy Create(ITextTemplatingEngineHost host) {
+		return (host is IServiceProvider) ? new VSManagementStrategy(host) : new ManagementStrategy(host);
+	}
+
+	internal ManagementStrategy(ITextTemplatingEngineHost host) { }
+
+	internal virtual void CreateFile(String fileName, String content) {
+		File.WriteAllText(fileName, content);
+	}
+	
+	internal virtual void DeleteFile(String fileName) {
+		if (File.Exists(fileName))
+			File.Delete(fileName);
+	}
+	
+	internal virtual string DefaultProjectNamespace {
+		get { return null; }
+	}
+		
+	internal virtual string GetCustomToolNamespace(string fileName) {
+		return null;
+	}
+}
+
+class VSManagementStrategy : ManagementStrategy
+{
+	private EnvDTE.ProjectItem templateProjectItem;
+	private EnvDTE.DTE dte;
+	
+	internal VSManagementStrategy(ITextTemplatingEngineHost host) : base(host) {
+		IServiceProvider hostServiceProvider = (IServiceProvider)host;
+		if(hostServiceProvider == null)
+			throw new ArgumentNullException("Could not obtain hostServiceProvider");
+		
+		dte = (EnvDTE.DTE)hostServiceProvider.GetService(typeof(EnvDTE.DTE));
+		if(dte == null)
+			throw new ArgumentNullException("Could not obtain DTE from host");
+		
+		templateProjectItem = dte.Solution.FindProjectItem(host.TemplateFile);			
+	}
+	
+	internal override void CreateFile(String fileName, String content) {
+		base.CreateFile(fileName, content);
+		((EventHandler)delegate { templateProjectItem.ProjectItems.AddFromFile(fileName); }).BeginInvoke(null, null, null, null);
+	}
+	
+	internal override void DeleteFile(String fileName) {
+		((EventHandler)delegate { FindAndDeleteFile(fileName); }).BeginInvoke(null, null, null, null);
+	}
+	
+	private void FindAndDeleteFile(String fileName) {	
+		foreach(EnvDTE.ProjectItem projectItem in templateProjectItem.ProjectItems) {
+			if (projectItem.get_FileNames(0) == fileName) {
+				projectItem.Delete();
+				return;
+			}
+		}
+	}
+
+	internal override string DefaultProjectNamespace {
+		get { return templateProjectItem.ContainingProject.Properties.Item("DefaultNamespace").Value.ToString(); }
+	}
+	
+	internal override string GetCustomToolNamespace(string fileName) {
+		return dte.Solution.FindProjectItem(fileName).Properties.Item("CustomToolNamespace").Value.ToString();
+	}
+}
+
+// Methods that deserve a better home
+public static class Util
+{
+	public static T ParseEnum<T>(String value, T defaultValue) where T:struct {
+		try { return (T)Enum.Parse(typeof(T), value); }
+		catch { return defaultValue; }
+	}
+	
+	public static MemberAttributes DecodeMemberAccess(String access) {
+		switch(access) {
+			case "Private": return MemberAttributes.Private;
+			case "Internal": return MemberAttributes.Assembly;
+			case "Protected": return MemberAttributes.Family;
+			case "ProtectedInternal": return MemberAttributes.FamilyAndAssembly;
+			default: return MemberAttributes.Public;
+		}
+	}
+	
+	public static MemberAttributes DecodeMemberModifier(String modifier) {
+		switch(modifier) {
+			case "Virtual": return 0;
+			case "Override": return MemberAttributes.Override;
+			default: return MemberAttributes.Final;
+		}
+	}
+}
+
+class TypeStub : System.Reflection.TypeDelegator
+{
+	private String name;
+	
+	public TypeStub(String name) : base(typeof(System.Enum)) {
+		this.name = name;
+	}
+	
+	public override String Name {
+		get { return name; }
+	}
+	
+	public override String FullName {
+		get { return name; }
+	}
+}#>
Index: trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/OKB.dbml
===================================================================
--- trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/OKB.dbml	(revision 4276)
+++ trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/OKB.dbml	(revision 4276)
@@ -0,0 +1,325 @@
+﻿<?xml version="1.0" encoding="utf-8"?><Database Name="OKB" EntityNamespace="HeuristicLab.Services.OKB.DataAccess" ContextNamespace="HeuristicLab.Services.OKB.DataAccess" Class="OKBDataContext" Serialization="Unidirectional" xmlns="http://schemas.microsoft.com/linqtosql/dbml/2007">
+  <Connection Mode="AppSettings" ConnectionString="Data Source=localhost;Initial Catalog=OKB;Integrated Security=True" SettingsObjectName="HeuristicLab.Services.OKB.DataAccess.Properties.Settings" SettingsPropertyName="OKBConnectionString" Provider="System.Data.SqlClient" />
+  <Table Name="dbo.[User]" Member="Users">
+    <Type Name="User">
+      <Column Name="Id" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="Name" Type="System.String" DbType="VarChar(200) NOT NULL" CanBeNull="false" />
+      <Association Name="User_ExperimentCreator" Member="ExperimentCreators" ThisKey="Id" OtherKey="UserId" Type="ExperimentCreator" />
+      <Association Name="User_Run" Member="Runs" ThisKey="Id" OtherKey="UserId" Type="Run" />
+    </Type>
+  </Table>
+  <Table Name="dbo.Algorithm_Parameter" Member="Algorithm_Parameters">
+    <Type Name="Algorithm_Parameter">
+      <Column Name="AlgorithmId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="ParameterId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Association Name="Parameter_Algorithm_Parameter" Member="Parameter" ThisKey="ParameterId" OtherKey="Id" Type="Parameter" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+      <Association Name="Algorithm_Algorithm_Parameter" Member="Algorithm" ThisKey="AlgorithmId" OtherKey="Id" Type="Algorithm" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.AlgorithmClass" Member="AlgorithmClasses">
+    <Type Name="AlgorithmClass">
+      <Column Name="Id" Type="System.Int32" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Column Name="Name" Type="System.String" DbType="VarChar(200) NOT NULL" CanBeNull="false" />
+      <Column Name="Description" Type="System.String" DbType="VarChar(MAX)" CanBeNull="true" />
+      <Association Name="AlgorithmClass_Algorithm" Member="Algorithms" ThisKey="Id" OtherKey="AlgorithmClassId" Type="Algorithm" />
+    </Type>
+  </Table>
+  <Table Name="dbo.AlgorithmData" Member="AlgorithmDatas">
+    <Type Name="AlgorithmData">
+      <Column Name="AlgorithmId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="Data" Type="System.Data.Linq.Binary" DbType="VarBinary(MAX) NOT NULL" CanBeNull="false" UpdateCheck="Never" />
+      <Association Name="Algorithm_AlgorithmData" Member="Algorithm" ThisKey="AlgorithmId" OtherKey="Id" Type="Algorithm" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.BlobResultValue" Member="BlobResultValues">
+    <Type Name="BlobResultValue">
+      <Column Name="ResultId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="RunId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="Value" Type="System.Data.Linq.Binary" DbType="VarBinary(MAX) NOT NULL" CanBeNull="false" UpdateCheck="Never" />
+      <Association Name="Run_BlobResultValue" Member="Run" ThisKey="RunId" OtherKey="Id" Type="Run" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+      <Association Name="Result_BlobResultValue" Member="Result" ThisKey="ResultId" OtherKey="Id" Type="Result" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.CharParameterValue" Member="CharParameterValues">
+    <Type Name="CharParameterValue">
+      <Column Name="ParameterId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="ExperimentId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="Value" Type="System.String" DbType="VarChar(MAX) NOT NULL" CanBeNull="false" />
+      <Association Name="Experiment_CharParameterValue" Member="Experiment" ThisKey="ExperimentId" OtherKey="Id" Type="Experiment" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+      <Association Name="Parameter_CharParameterValue" Member="Parameter" ThisKey="ParameterId" OtherKey="Id" Type="Parameter" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.CharProblemCharacteristicValue" Member="CharProblemCharacteristicValues">
+    <Type Name="CharProblemCharacteristicValue">
+      <Column Name="ProblemCharacteristicId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="ProblemId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="Value" Type="System.String" DbType="VarChar(MAX) NOT NULL" CanBeNull="false" />
+      <Association Name="Problem_CharProblemCharacteristicValue" Member="Problem" ThisKey="ProblemId" OtherKey="Id" Type="Problem" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+      <Association Name="ProblemCharacteristic_CharProblemCharacteristicValue" Member="ProblemCharacteristic" ThisKey="ProblemCharacteristicId" OtherKey="Id" Type="ProblemCharacteristic" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.CharResultValue" Member="CharResultValues">
+    <Type Name="CharResultValue">
+      <Column Name="ResultId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="RunId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="Value" Type="System.String" DbType="VarChar(MAX) NOT NULL" CanBeNull="false" />
+      <Association Name="Run_CharResultValue" Member="Run" ThisKey="RunId" OtherKey="Id" Type="Run" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+      <Association Name="Result_CharResultValue" Member="Result" ThisKey="ResultId" OtherKey="Id" Type="Result" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.Client" Member="Clients">
+    <Type Name="Client">
+      <Column Name="Id" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="Name" Type="System.String" DbType="VarChar(200) NOT NULL" CanBeNull="false" />
+      <Association Name="Client_Run" Member="Runs" ThisKey="Id" OtherKey="ClientId" Type="Run" />
+    </Type>
+  </Table>
+  <Table Name="dbo.DataType" Member="DataTypes">
+    <Type Name="DataType">
+      <Column Name="Id" Type="System.Int32" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Column Name="SqlName" Type="System.String" DbType="VarChar(200) NOT NULL" CanBeNull="false" />
+      <Column Name="ClrName" Type="System.String" DbType="VarChar(MAX) NOT NULL" CanBeNull="false" />
+      <Association Name="DataType_ProblemCharacteristic" Member="ProblemCharacteristics" ThisKey="Id" OtherKey="DataTypeId" Type="ProblemCharacteristic" />
+      <Association Name="DataType_Result" Member="Results" ThisKey="Id" OtherKey="DataTypeId" Type="Result" />
+      <Association Name="DataType_OperatorParameterValue" Member="OperatorParameterValues" ThisKey="Id" OtherKey="DataTypeId" Type="OperatorParameterValue" />
+      <Association Name="DataType_Parameter" Member="Parameters" ThisKey="Id" OtherKey="DataTypeId" Type="Parameter" />
+    </Type>
+  </Table>
+  <Table Name="dbo.Experiment" Member="Experiments">
+    <Type Name="Experiment">
+      <Column Name="Id" Type="System.Int32" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Column Name="ProjectId" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Column Name="AlgorithmId" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Column Name="ProblemId" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Association Name="Experiment_CharParameterValue" Member="CharParameterValues" ThisKey="Id" OtherKey="ExperimentId" Type="CharParameterValue" />
+      <Association Name="Experiment_ExperimentCreator" Member="ExperimentCreators" ThisKey="Id" OtherKey="ExperimentId" Type="ExperimentCreator" />
+      <Association Name="Experiment_FloatParameterValue" Member="FloatParameterValues" ThisKey="Id" OtherKey="ExperimentId" Type="FloatParameterValue" />
+      <Association Name="Experiment_IntParameterValue" Member="IntParameterValues" ThisKey="Id" OtherKey="ExperimentId" Type="IntParameterValue" />
+      <Association Name="Experiment_Run" Member="Runs" ThisKey="Id" OtherKey="ExperimentId" Type="Run" />
+      <Association Name="Experiment_OperatorParameterValue" Member="OperatorParameterValues" ThisKey="Id" OtherKey="ExperimentId" Type="OperatorParameterValue" />
+      <Association Name="Problem_Experiment" Member="Problem" ThisKey="ProblemId" OtherKey="Id" Type="Problem" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+      <Association Name="Project_Experiment" Member="Project" ThisKey="ProjectId" OtherKey="Id" Type="Project" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+      <Association Name="Algorithm_Experiment" Member="Algorithm" ThisKey="AlgorithmId" OtherKey="Id" Type="Algorithm" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.ExperimentCreator" Member="ExperimentCreators">
+    <Type Name="ExperimentCreator">
+      <Column Name="ExperimentId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="UserId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Association Name="Experiment_ExperimentCreator" Member="Experiment" ThisKey="ExperimentId" OtherKey="Id" Type="Experiment" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+      <Association Name="User_ExperimentCreator" Member="User" ThisKey="UserId" OtherKey="Id" Type="User" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.FloatParameterValue" Member="FloatParameterValues">
+    <Type Name="FloatParameterValue">
+      <Column Name="ParameterId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="ExperimentId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="Value" Type="System.Double" DbType="Float NOT NULL" CanBeNull="false" />
+      <Association Name="Experiment_FloatParameterValue" Member="Experiment" ThisKey="ExperimentId" OtherKey="Id" Type="Experiment" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+      <Association Name="Parameter_FloatParameterValue" Member="Parameter" ThisKey="ParameterId" OtherKey="Id" Type="Parameter" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.FloatProblemCharacteristicValue" Member="FloatProblemCharacteristicValues">
+    <Type Name="FloatProblemCharacteristicValue">
+      <Column Name="ProblemCharacteristicId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="ProblemId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="Value" Type="System.Double" DbType="Float NOT NULL" CanBeNull="false" />
+      <Association Name="Problem_FloatProblemCharacteristicValue" Member="Problem" ThisKey="ProblemId" OtherKey="Id" Type="Problem" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+      <Association Name="ProblemCharacteristic_FloatProblemCharacteristicValue" Member="ProblemCharacteristic" ThisKey="ProblemCharacteristicId" OtherKey="Id" Type="ProblemCharacteristic" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.FloatResultValue" Member="FloatResultValues">
+    <Type Name="FloatResultValue">
+      <Column Name="ResultId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="RunId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="Value" Type="System.Double" DbType="Float NOT NULL" CanBeNull="false" />
+      <Association Name="Run_FloatResultValue" Member="Run" ThisKey="RunId" OtherKey="Id" Type="Run" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+      <Association Name="Result_FloatResultValue" Member="Result" ThisKey="ResultId" OtherKey="Id" Type="Result" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.IntParameterValue" Member="IntParameterValues">
+    <Type Name="IntParameterValue">
+      <Column Name="ParameterId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="ExperimentId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="Value" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Association Name="Experiment_IntParameterValue" Member="Experiment" ThisKey="ExperimentId" OtherKey="Id" Type="Experiment" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+      <Association Name="Parameter_IntParameterValue" Member="Parameter" ThisKey="ParameterId" OtherKey="Id" Type="Parameter" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.IntProblemCharacteristicValue" Member="IntProblemCharacteristicValues">
+    <Type Name="IntProblemCharacteristicValue">
+      <Column Name="ProblemCharacteristicId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="ProblemId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="Value" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Association Name="Problem_IntProblemCharacteristicValue" Member="Problem" ThisKey="ProblemId" OtherKey="Id" Type="Problem" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+      <Association Name="ProblemCharacteristic_IntProblemCharacteristicValue" Member="ProblemCharacteristic" ThisKey="ProblemCharacteristicId" OtherKey="Id" Type="ProblemCharacteristic" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.IntResultValue" Member="IntResultValues">
+    <Type Name="IntResultValue">
+      <Column Name="ResultId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="RunId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="Value" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Association Name="Run_IntResultValue" Member="Run" ThisKey="RunId" OtherKey="Id" Type="Run" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+      <Association Name="Result_IntResultValue" Member="Result" ThisKey="ResultId" OtherKey="Id" Type="Result" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.Platform" Member="Platforms">
+    <Type Name="Platform">
+      <Column Name="Id" Type="System.Int32" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Column Name="Name" Type="System.String" DbType="VarChar(200) NOT NULL" CanBeNull="false" />
+      <Column Name="Description" Type="System.String" DbType="VarChar(MAX)" CanBeNull="true" />
+      <Association Name="Platform_Problem" Member="Problems" ThisKey="Id" OtherKey="PlatformId" Type="Problem" />
+      <Association Name="Platform_Algorithm" Member="Algorithms" ThisKey="Id" OtherKey="PlatformId" Type="Algorithm" />
+    </Type>
+  </Table>
+  <Table Name="dbo.Problem" Member="Problems">
+    <Type Name="Problem">
+      <Column Name="Id" Type="System.Int32" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Column Name="ProblemClassId" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Column Name="PlatformId" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Column Name="SolutionRepresentationId" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Column Name="Name" Type="System.String" DbType="VarChar(200) NOT NULL" CanBeNull="false" />
+      <Column Name="Description" Type="System.String" DbType="VarChar(MAX)" CanBeNull="true" />
+      <Association Name="Problem_CharProblemCharacteristicValue" Member="CharProblemCharacteristicValues" ThisKey="Id" OtherKey="ProblemId" Type="CharProblemCharacteristicValue" />
+      <Association Name="Problem_Experiment" Member="Experiments" ThisKey="Id" OtherKey="ProblemId" Type="Experiment" />
+      <Association Name="Problem_FloatProblemCharacteristicValue" Member="FloatProblemCharacteristicValues" ThisKey="Id" OtherKey="ProblemId" Type="FloatProblemCharacteristicValue" />
+      <Association Name="Problem_IntProblemCharacteristicValue" Member="IntProblemCharacteristicValues" ThisKey="Id" OtherKey="ProblemId" Type="IntProblemCharacteristicValue" />
+      <Association Name="Problem_Problem_Parameter" Member="Problem_Parameters" ThisKey="Id" OtherKey="ProblemId" Type="Problem_Parameter" />
+      <Association Name="Problem_ProblemData" Member="ProblemData" ThisKey="Id" OtherKey="ProblemId" Type="ProblemData" Cardinality="One" />
+      <Association Name="Platform_Problem" Member="Platform" ThisKey="PlatformId" OtherKey="Id" Type="Platform" IsForeignKey="true" />
+      <Association Name="ProblemClass_Problem" Member="ProblemClass" ThisKey="ProblemClassId" OtherKey="Id" Type="ProblemClass" IsForeignKey="true" />
+      <Association Name="SolutionRepresentation_Problem" Member="SolutionRepresentation" ThisKey="SolutionRepresentationId" OtherKey="Id" Type="SolutionRepresentation" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.Problem_Parameter" Member="Problem_Parameters">
+    <Type Name="Problem_Parameter">
+      <Column Name="ProblemId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="ParameterId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Association Name="Parameter_Problem_Parameter" Member="Parameter" ThisKey="ParameterId" OtherKey="Id" Type="Parameter" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+      <Association Name="Problem_Problem_Parameter" Member="Problem" ThisKey="ProblemId" OtherKey="Id" Type="Problem" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.ProblemCharacteristic" Member="ProblemCharacteristics">
+    <Type Name="ProblemCharacteristic">
+      <Column Name="Id" Type="System.Int32" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Column Name="Name" Type="System.String" DbType="VarChar(200) NOT NULL" CanBeNull="false" />
+      <Column Name="Description" Type="System.String" DbType="VarChar(MAX)" CanBeNull="true" />
+      <Column Name="DataTypeId" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Association Name="ProblemCharacteristic_CharProblemCharacteristicValue" Member="CharProblemCharacteristicValues" ThisKey="Id" OtherKey="ProblemCharacteristicId" Type="CharProblemCharacteristicValue" />
+      <Association Name="ProblemCharacteristic_FloatProblemCharacteristicValue" Member="FloatProblemCharacteristicValues" ThisKey="Id" OtherKey="ProblemCharacteristicId" Type="FloatProblemCharacteristicValue" />
+      <Association Name="ProblemCharacteristic_IntProblemCharacteristicValue" Member="IntProblemCharacteristicValues" ThisKey="Id" OtherKey="ProblemCharacteristicId" Type="IntProblemCharacteristicValue" />
+      <Association Name="DataType_ProblemCharacteristic" Member="DataType" ThisKey="DataTypeId" OtherKey="Id" Type="DataType" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.ProblemClass" Member="ProblemClasses">
+    <Type Name="ProblemClass">
+      <Column Name="Id" Type="System.Int32" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Column Name="Name" Type="System.String" DbType="VarChar(200) NOT NULL" CanBeNull="false" />
+      <Column Name="Description" Type="System.String" DbType="VarChar(100)" CanBeNull="true" />
+      <Association Name="ProblemClass_Problem" Member="Problems" ThisKey="Id" OtherKey="ProblemClassId" Type="Problem" />
+    </Type>
+  </Table>
+  <Table Name="dbo.ProblemData" Member="ProblemDatas">
+    <Type Name="ProblemData">
+      <Column Name="ProblemId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="Data" Type="System.Data.Linq.Binary" DbType="VarBinary(MAX) NOT NULL" CanBeNull="false" UpdateCheck="Never" />
+      <Association Name="Problem_ProblemData" Member="Problem" ThisKey="ProblemId" OtherKey="Id" Type="Problem" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.Project" Member="Projects">
+    <Type Name="Project">
+      <Column Name="Id" Type="System.Int32" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Column Name="Name" Type="System.String" DbType="VarChar(200) NOT NULL" CanBeNull="false" />
+      <Column Name="Description" Type="System.String" DbType="VarChar(MAX)" CanBeNull="true" />
+      <Association Name="Project_Experiment" Member="Experiments" ThisKey="Id" OtherKey="ProjectId" Type="Experiment" />
+    </Type>
+  </Table>
+  <Table Name="dbo.Run" Member="Runs">
+    <Type Name="Run">
+      <Column Name="Id" Type="System.Int32" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Column Name="ExperimentId" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Column Name="FinishedDate" Type="System.DateTime" DbType="DateTime2" CanBeNull="true" />
+      <Column Name="UserId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" CanBeNull="false" />
+      <Column Name="ClientId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" CanBeNull="false" />
+      <Association Name="Run_BlobResultValue" Member="BlobResultValues" ThisKey="Id" OtherKey="RunId" Type="BlobResultValue" />
+      <Association Name="Run_CharResultValue" Member="CharResultValues" ThisKey="Id" OtherKey="RunId" Type="CharResultValue" />
+      <Association Name="Run_FloatResultValue" Member="FloatResultValues" ThisKey="Id" OtherKey="RunId" Type="FloatResultValue" />
+      <Association Name="Run_IntResultValue" Member="IntResultValues" ThisKey="Id" OtherKey="RunId" Type="IntResultValue" />
+      <Association Name="Client_Run" Member="Client" ThisKey="ClientId" OtherKey="Id" Type="Client" IsForeignKey="true" />
+      <Association Name="Experiment_Run" Member="Experiment" ThisKey="ExperimentId" OtherKey="Id" Type="Experiment" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+      <Association Name="User_Run" Member="User" ThisKey="UserId" OtherKey="Id" Type="User" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.SolutionRepresentation" Member="SolutionRepresentations">
+    <Type Name="SolutionRepresentation">
+      <Column Name="Id" Type="System.Int32" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Column Name="Name" Type="System.String" DbType="VarChar(200) NOT NULL" CanBeNull="false" />
+      <Column Name="Description" Type="System.String" DbType="VarChar(MAX)" CanBeNull="true" />
+      <Association Name="SolutionRepresentation_Problem" Member="Problems" ThisKey="Id" OtherKey="SolutionRepresentationId" Type="Problem" />
+    </Type>
+  </Table>
+  <Table Name="dbo.Algorithm" Member="Algorithms">
+    <Type Name="Algorithm">
+      <Column Name="Id" Type="System.Int32" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Column Name="AlgorithmClassId" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Column Name="PlatformId" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Column Name="Name" Type="System.String" DbType="VarChar(200) NOT NULL" CanBeNull="false" />
+      <Column Name="Description" Type="System.String" DbType="VarChar(MAX)" CanBeNull="true" />
+      <Association Name="Algorithm_Algorithm_Parameter" Member="Algorithm_Parameters" ThisKey="Id" OtherKey="AlgorithmId" Type="Algorithm_Parameter" />
+      <Association Name="Algorithm_AlgorithmData" Member="AlgorithmData" ThisKey="Id" OtherKey="AlgorithmId" Type="AlgorithmData" Cardinality="One" />
+      <Association Name="Algorithm_Experiment" Member="Experiments" ThisKey="Id" OtherKey="AlgorithmId" Type="Experiment" />
+      <Association Name="Algorithm_Algorithm_Result" Member="Algorithm_Results" ThisKey="Id" OtherKey="AlgorithmId" Type="Algorithm_Result" />
+      <Association Name="AlgorithmClass_Algorithm" Member="AlgorithmClass" ThisKey="AlgorithmClassId" OtherKey="Id" Type="AlgorithmClass" IsForeignKey="true" />
+      <Association Name="Platform_Algorithm" Member="Platform" ThisKey="PlatformId" OtherKey="Id" Type="Platform" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.Algorithm_Result" Member="Algorithm_Results">
+    <Type Name="Algorithm_Result">
+      <Column Name="AlgorithmId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="ResultId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Association Name="Algorithm_Algorithm_Result" Member="Algorithm" ThisKey="AlgorithmId" OtherKey="Id" Type="Algorithm" IsForeignKey="true" />
+      <Association Name="Result_Algorithm_Result" Member="Result" ThisKey="ResultId" OtherKey="Id" Type="Result" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.Result" Member="Results">
+    <Type Name="Result">
+      <Column Name="Id" Type="System.Int32" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Column Name="Name" Type="System.String" DbType="VarChar(200) NOT NULL" CanBeNull="false" />
+      <Column Name="Description" Type="System.String" DbType="VarChar(MAX)" CanBeNull="true" />
+      <Column Name="DataTypeId" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Association Name="Result_BlobResultValue" Member="BlobResultValues" ThisKey="Id" OtherKey="ResultId" Type="BlobResultValue" />
+      <Association Name="Result_CharResultValue" Member="CharResultValues" ThisKey="Id" OtherKey="ResultId" Type="CharResultValue" />
+      <Association Name="Result_FloatResultValue" Member="FloatResultValues" ThisKey="Id" OtherKey="ResultId" Type="FloatResultValue" />
+      <Association Name="Result_IntResultValue" Member="IntResultValues" ThisKey="Id" OtherKey="ResultId" Type="IntResultValue" />
+      <Association Name="Result_Algorithm_Result" Member="Algorithm_Results" ThisKey="Id" OtherKey="ResultId" Type="Algorithm_Result" />
+      <Association Name="DataType_Result" Member="DataType" ThisKey="DataTypeId" OtherKey="Id" Type="DataType" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.OperatorParameterValue" Member="OperatorParameterValues">
+    <Type Name="OperatorParameterValue">
+      <Column Name="ParameterId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="ExperimentId" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="Value" Type="System.Data.Linq.Binary" DbType="VarBinary(MAX) NOT NULL" CanBeNull="false" UpdateCheck="Never" />
+      <Column Name="DataTypeId" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Association Name="DataType_OperatorParameterValue" Member="DataType" ThisKey="DataTypeId" OtherKey="Id" Type="DataType" IsForeignKey="true" />
+      <Association Name="Experiment_OperatorParameterValue" Member="Experiment" ThisKey="ExperimentId" OtherKey="Id" Type="Experiment" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+      <Association Name="Parameter_OperatorParameterValue" Member="Parameter" ThisKey="ParameterId" OtherKey="Id" Type="Parameter" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.Parameter" Member="Parameters">
+    <Type Name="Parameter">
+      <Column Name="Id" Type="System.Int32" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Column Name="Name" Type="System.String" DbType="VarChar(200) NOT NULL" CanBeNull="false" />
+      <Column Name="Description" Type="System.String" DbType="VarChar(MAX)" CanBeNull="true" />
+      <Column Name="DataTypeId" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Association Name="Parameter_Algorithm_Parameter" Member="Algorithm_Parameters" ThisKey="Id" OtherKey="ParameterId" Type="Algorithm_Parameter" />
+      <Association Name="Parameter_CharParameterValue" Member="CharParameterValues" ThisKey="Id" OtherKey="ParameterId" Type="CharParameterValue" />
+      <Association Name="Parameter_FloatParameterValue" Member="FloatParameterValues" ThisKey="Id" OtherKey="ParameterId" Type="FloatParameterValue" />
+      <Association Name="Parameter_IntParameterValue" Member="IntParameterValues" ThisKey="Id" OtherKey="ParameterId" Type="IntParameterValue" />
+      <Association Name="Parameter_Problem_Parameter" Member="Problem_Parameters" ThisKey="Id" OtherKey="ParameterId" Type="Problem_Parameter" />
+      <Association Name="Parameter_OperatorParameterValue" Member="OperatorParameterValues" ThisKey="Id" OtherKey="ParameterId" Type="OperatorParameterValue" />
+      <Association Name="DataType_Parameter" Member="DataType" ThisKey="DataTypeId" OtherKey="Id" Type="DataType" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+    </Type>
+  </Table>
+</Database>
Index: trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/OKB.dbml.layout
===================================================================
--- trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/OKB.dbml.layout	(revision 4276)
+++ trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/OKB.dbml.layout	(revision 4276)
@@ -0,0 +1,527 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<ordesignerObjectsDiagram dslVersion="1.0.0.0" absoluteBounds="0, 0, 13.375, 9.375" name="OKB">
+  <DataContextMoniker Name="/OKBDataContext" />
+  <nestedChildShapes>
+    <classShape Id="6abee4a0-9a54-4c51-bb1b-31061cb25f9f" absoluteBounds="10.625, 6.75, 2, 1.1939925130208344">
+      <DataClassMoniker Name="/OKBDataContext/User" />
+      <nestedChildShapes>
+        <elementListCompartment Id="b075afcd-344d-4a87-bd57-0ca2e20b82cc" absoluteBounds="10.64, 7.2100000000000009, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="e061f93d-509b-4bc6-901c-e6cfdfd69867" isExpanded="false" absoluteBounds="3.125, 4, 2, 0.45">
+      <DataClassMoniker Name="/OKBDataContext/Algorithm_Parameter" />
+      <nestedChildShapes>
+        <elementListCompartment Id="fb48507a-41f4-4588-bd7d-24ca5d51b7a5" absoluteBounds="3.1400000000000006, 4.4600000000000009, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="58c2dddf-6b8a-460e-b9f4-d04299b79210" absoluteBounds="0.625, 0.5, 2, 1.3862939453125023">
+      <DataClassMoniker Name="/OKBDataContext/AlgorithmClass" />
+      <nestedChildShapes>
+        <elementListCompartment Id="fc673d38-4fb9-40bf-8f93-e237d1a8fed2" absoluteBounds="0.64000000000000012, 0.96000000000000085, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="729912f6-fb7b-4447-ae25-ffb25578bd13" isExpanded="false" absoluteBounds="3.125, 3, 2, 0.45">
+      <DataClassMoniker Name="/OKBDataContext/AlgorithmData" />
+      <nestedChildShapes>
+        <elementListCompartment Id="96f34df2-e1d4-4700-8cf2-0437a1eb36be" absoluteBounds="3.1399999999999997, 3.4600000000000009, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="a9cd1c2f-1a1a-4c37-9fcf-646a051820f2" isExpanded="false" absoluteBounds="3.125, 8.25, 2, 0.45">
+      <DataClassMoniker Name="/OKBDataContext/BlobResultValue" />
+      <nestedChildShapes>
+        <elementListCompartment Id="e1513fbb-a565-4510-b66b-1f44476b1b19" absoluteBounds="3.1400000000000006, 8.71, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="a782534f-cc38-43ef-bf3a-297bfdf111d9" isExpanded="false" absoluteBounds="8.125, 4.75, 2, 0.45">
+      <DataClassMoniker Name="/OKBDataContext/CharParameterValue" />
+      <nestedChildShapes>
+        <elementListCompartment Id="48f55d6c-5249-40df-a509-98e14e61abc2" absoluteBounds="8.1400000005960464, 5.21000000089407, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="876ede77-da2a-4619-bef8-f84d73798bb7" isExpanded="false" absoluteBounds="8.125, 2.625, 2, 0.45">
+      <DataClassMoniker Name="/OKBDataContext/CharProblemCharacteristicValue" />
+      <nestedChildShapes>
+        <elementListCompartment Id="d381c2b0-f63b-4a56-9b0f-525ba0653ebf" absoluteBounds="8.14, 3.0850000000000009, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="9612fac1-ba28-43fc-83d4-5ff9fedef18d" isExpanded="false" absoluteBounds="3.125, 6.75, 2, 0.45">
+      <DataClassMoniker Name="/OKBDataContext/CharResultValue" />
+      <nestedChildShapes>
+        <elementListCompartment Id="803e3c30-2b15-4ed0-92f8-de2447ac8b51" absoluteBounds="3.1400000000000006, 7.2100000000000009, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="e2c62cf2-d077-43f5-9393-a88252e74941" absoluteBounds="0.875, 5.5, 2, 1.1939925130208344">
+      <DataClassMoniker Name="/OKBDataContext/Client" />
+      <nestedChildShapes>
+        <elementListCompartment Id="26d7b85f-b34c-44be-b935-4e4de55f93a2" absoluteBounds="0.89000000000000057, 5.9600000000000009, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="cf610b34-fb6c-487b-abfa-0f03eb70fb21" absoluteBounds="10.5, 0.5, 2, 1.3862939453124987">
+      <DataClassMoniker Name="/OKBDataContext/DataType" />
+      <nestedChildShapes>
+        <elementListCompartment Id="0d6b3052-c543-4dab-8da2-ac35d3c084dd" absoluteBounds="10.515, 0.96000000000000085, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="f91d981c-4c4c-407a-aedd-bc0091bdd664" absoluteBounds="5.5, 4.25, 2, 1.5785953776041666">
+      <DataClassMoniker Name="/OKBDataContext/Experiment" />
+      <nestedChildShapes>
+        <elementListCompartment Id="842b4ada-aadb-4e80-95e3-0d500b5cb14b" absoluteBounds="5.5150000000000006, 4.7100000000000009, 1.9700000000000002, 1.0185953776041665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="12d4c13b-7509-49ae-998b-a0b43f160db7" absoluteBounds="8.125, 7.5, 2, 1.1939925130208309">
+      <DataClassMoniker Name="/OKBDataContext/ExperimentCreator" />
+      <nestedChildShapes>
+        <elementListCompartment Id="e4e83d65-2fb2-4364-8f61-64ce8440b3c4" absoluteBounds="8.14, 7.9600000000000009, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="51fb443c-2ed1-4364-9dc3-84a606c921f5" isExpanded="false" absoluteBounds="8.125, 4.25, 2, 0.45">
+      <DataClassMoniker Name="/OKBDataContext/FloatParameterValue" />
+      <nestedChildShapes>
+        <elementListCompartment Id="5bd13978-5901-4096-b65f-4d29a32bda70" absoluteBounds="8.14, 4.7100000000000009, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="c8ef7e44-7370-43e7-af01-97fa14c3b67d" isExpanded="false" absoluteBounds="8.125, 2.125, 2, 0.45">
+      <DataClassMoniker Name="/OKBDataContext/FloatProblemCharacteristicValue" />
+      <nestedChildShapes>
+        <elementListCompartment Id="d4d8ca79-8460-4dff-b5f1-d47f88338b75" absoluteBounds="8.1400000005960464, 2.5850000008940697, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="1ace6e41-a514-40d5-951e-3d776d4ead12" isExpanded="false" absoluteBounds="3.125, 7.25, 2, 0.45">
+      <DataClassMoniker Name="/OKBDataContext/FloatResultValue" />
+      <nestedChildShapes>
+        <elementListCompartment Id="f722f7f4-6e76-4b53-94ae-27f593ed870d" absoluteBounds="3.1400000000000006, 7.7100000000000009, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="2b634d14-6f55-4540-adf5-d208acc74946" isExpanded="false" absoluteBounds="8.125, 5.25, 2, 0.45">
+      <DataClassMoniker Name="/OKBDataContext/IntParameterValue" />
+      <nestedChildShapes>
+        <elementListCompartment Id="43baef29-fe49-4994-9154-1f9df4bc8af5" absoluteBounds="8.14, 5.7100000000000009, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="32c25111-3cda-4647-8ee9-74db3b80cac0" isExpanded="false" absoluteBounds="8.125, 3.125, 2, 0.45">
+      <DataClassMoniker Name="/OKBDataContext/IntProblemCharacteristicValue" />
+      <nestedChildShapes>
+        <elementListCompartment Id="3bc485ec-01ad-4615-a3ec-8c0e5f83b89c" absoluteBounds="8.14, 3.5850000000000009, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="35203392-27ea-40f6-8435-094df5ed122a" isExpanded="false" absoluteBounds="3.125, 7.75, 2, 0.45">
+      <DataClassMoniker Name="/OKBDataContext/IntResultValue" />
+      <nestedChildShapes>
+        <elementListCompartment Id="293f584e-8cf2-4cb0-9fb8-bb8356c309c9" absoluteBounds="3.1400000000000006, 8.21, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="6c3d2cbe-8fb3-49bd-9390-53177f3dc5fa" absoluteBounds="3.125, 0.5, 2, 1.3862939453125023">
+      <DataClassMoniker Name="/OKBDataContext/Platform" />
+      <nestedChildShapes>
+        <elementListCompartment Id="0b4552ba-a2ce-4a01-a7d7-04f919a43ddf" absoluteBounds="3.1400000005960464, 0.96000000089406967, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="367a45c9-887f-4faf-b038-d76007c4a052" absoluteBounds="5.5, 2.125, 2, 1.9631982421874952">
+      <DataClassMoniker Name="/OKBDataContext/Problem" />
+      <nestedChildShapes>
+        <elementListCompartment Id="df1447a5-c939-49d4-a0aa-4cac48de48a7" absoluteBounds="5.5150000000000006, 2.5850000000000009, 1.9700000000000002, 1.4031982421875" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="bf075940-80da-477a-9706-a3dd0ffba1da" isExpanded="false" absoluteBounds="8.125, 3.625, 2, 0.45">
+      <DataClassMoniker Name="/OKBDataContext/Problem_Parameter" />
+      <nestedChildShapes>
+        <elementListCompartment Id="c15a3e7d-2a41-4767-8095-785fd6de190a" absoluteBounds="8.14, 4.0850000000000009, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="c2b4b1f9-1a1f-4393-af96-641a5dce3c4a" absoluteBounds="10.5, 2.125, 2, 1.5785953776041666">
+      <DataClassMoniker Name="/OKBDataContext/ProblemCharacteristic" />
+      <nestedChildShapes>
+        <elementListCompartment Id="20693bf3-9337-4668-9099-c429cdd9ae6d" absoluteBounds="10.515, 2.5850000000000009, 1.9700000000000002, 1.0185953776041665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="ed58689e-36e3-4438-973b-afcb64f6bea9" absoluteBounds="5.5, 0.5, 2, 1.3862939453125023">
+      <DataClassMoniker Name="/OKBDataContext/ProblemClass" />
+      <nestedChildShapes>
+        <elementListCompartment Id="a43ec0b8-8db5-4945-a091-4237ebba1ab0" absoluteBounds="5.515, 0.96000000000000085, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="b9cb0cc6-e33f-43bb-8436-cbeeeec8616f" isExpanded="false" absoluteBounds="3.125, 3.5, 2, 0.45">
+      <DataClassMoniker Name="/OKBDataContext/ProblemData" />
+      <nestedChildShapes>
+        <elementListCompartment Id="18eee346-e9ca-4d10-9bc8-99762cf0f007" absoluteBounds="3.1400000000000006, 3.9600000000000009, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="c7b79b94-b667-47e5-bcbc-23e2ee1daefa" absoluteBounds="3.125, 4.625, 2, 1.3862939453125023">
+      <DataClassMoniker Name="/OKBDataContext/Project" />
+      <nestedChildShapes>
+        <elementListCompartment Id="dbf4b1b3-5533-41af-b31a-2a9964e8913a" absoluteBounds="3.1400000000000006, 5.0850000000000009, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="39967a3e-8ba4-4866-a63b-4c8d2fdb1e08" absoluteBounds="5.625, 6.75, 2, 1.7708968098958344">
+      <DataClassMoniker Name="/OKBDataContext/Run" />
+      <nestedChildShapes>
+        <elementListCompartment Id="68a49e84-2867-4be6-8945-54c36a1fd47d" absoluteBounds="5.6400000000000006, 7.2100000000000009, 1.9700000000000002, 1.2108968098958333" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="dd93cdce-fce0-4d14-96ac-e681aeca4fb5" absoluteBounds="8.125, 0.5, 2, 1.3862939453125023">
+      <DataClassMoniker Name="/OKBDataContext/SolutionRepresentation" />
+      <nestedChildShapes>
+        <elementListCompartment Id="d8275b46-9429-4c08-8631-7eb644ba9ec5" absoluteBounds="8.14, 0.96000000000000085, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(7.5 : 4.975); (8.125 : 4.975)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Experiment/Experiment_CharParameterValue" />
+      <nodes>
+        <classShapeMoniker Id="f91d981c-4c4c-407a-aedd-bc0091bdd664" />
+        <classShapeMoniker Id="a782534f-cc38-43ef-bf3a-297bfdf111d9" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(7.07291666666667 : 5.82859537760417); (7.07291666666667 : 6.50172191879847); (7.82609398177643 : 6.50172191879847); (7.82609398177643 : 8.1875); (8.125 : 8.1875)]" manuallyRouted="true" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Experiment/Experiment_ExperimentCreator" />
+      <nodes>
+        <classShapeMoniker Id="f91d981c-4c4c-407a-aedd-bc0091bdd664" />
+        <classShapeMoniker Id="12d4c13b-7509-49ae-998b-a0b43f160db7" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(10.625 : 7.30729140533756); (10.385 : 7.30729140533756); (10.385 : 8.26562470439823); (10.125 : 8.26562470439823)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/User/User_ExperimentCreator" />
+      <nodes>
+        <classShapeMoniker Id="6abee4a0-9a54-4c51-bb1b-31061cb25f9f" />
+        <classShapeMoniker Id="12d4c13b-7509-49ae-998b-a0b43f160db7" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(7.5 : 4.475); (8.125 : 4.475)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Experiment/Experiment_FloatParameterValue" />
+      <nodes>
+        <classShapeMoniker Id="f91d981c-4c4c-407a-aedd-bc0091bdd664" />
+        <classShapeMoniker Id="51fb443c-2ed1-4364-9dc3-84a606c921f5" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(7.5 : 5.475); (8.125 : 5.475)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Experiment/Experiment_IntParameterValue" />
+      <nodes>
+        <classShapeMoniker Id="f91d981c-4c4c-407a-aedd-bc0091bdd664" />
+        <classShapeMoniker Id="2b634d14-6f55-4540-adf5-d208acc74946" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(7.5 : 2.85); (8.125 : 2.85)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Problem/Problem_CharProblemCharacteristicValue" />
+      <nodes>
+        <classShapeMoniker Id="367a45c9-887f-4faf-b038-d76007c4a052" />
+        <classShapeMoniker Id="876ede77-da2a-4619-bef8-f84d73798bb7" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(6.5 : 4.0881982421875); (6.5 : 4.25)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Problem/Problem_Experiment" />
+      <nodes>
+        <classShapeMoniker Id="367a45c9-887f-4faf-b038-d76007c4a052" />
+        <classShapeMoniker Id="f91d981c-4c4c-407a-aedd-bc0091bdd664" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(7.5 : 2.39583324765166); (8.125 : 2.39583324765166)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Problem/Problem_FloatProblemCharacteristicValue" />
+      <nodes>
+        <classShapeMoniker Id="367a45c9-887f-4faf-b038-d76007c4a052" />
+        <classShapeMoniker Id="c8ef7e44-7370-43e7-af01-97fa14c3b67d" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(7.5 : 3.35); (8.125 : 3.35)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Problem/Problem_IntProblemCharacteristicValue" />
+      <nodes>
+        <classShapeMoniker Id="367a45c9-887f-4faf-b038-d76007c4a052" />
+        <classShapeMoniker Id="32c25111-3cda-4647-8ee9-74db3b80cac0" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(4.28854151329647 : 1.8862939453125); (4.28854151329647 : 2.58749990746379); (5.5 : 2.58749990746379)]" manuallyRouted="true" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Platform/Platform_Problem" />
+      <nodes>
+        <classShapeMoniker Id="6c3d2cbe-8fb3-49bd-9390-53177f3dc5fa" />
+        <classShapeMoniker Id="367a45c9-887f-4faf-b038-d76007c4a052" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(7.5 : 3.86927069495743); (8.125 : 3.86927069495743)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Problem/Problem_Problem_Parameter" />
+      <nodes>
+        <classShapeMoniker Id="367a45c9-887f-4faf-b038-d76007c4a052" />
+        <classShapeMoniker Id="bf075940-80da-477a-9706-a3dd0ffba1da" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(10.5 : 2.85); (10.125 : 2.85)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/ProblemCharacteristic/ProblemCharacteristic_CharProblemCharacteristicValue" />
+      <nodes>
+        <classShapeMoniker Id="c2b4b1f9-1a1f-4393-af96-641a5dce3c4a" />
+        <classShapeMoniker Id="876ede77-da2a-4619-bef8-f84d73798bb7" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(10.5 : 2.35); (10.125 : 2.35)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/ProblemCharacteristic/ProblemCharacteristic_FloatProblemCharacteristicValue" />
+      <nodes>
+        <classShapeMoniker Id="c2b4b1f9-1a1f-4393-af96-641a5dce3c4a" />
+        <classShapeMoniker Id="c8ef7e44-7370-43e7-af01-97fa14c3b67d" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(10.5 : 3.35); (10.125 : 3.35)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/ProblemCharacteristic/ProblemCharacteristic_IntProblemCharacteristicValue" />
+      <nodes>
+        <classShapeMoniker Id="c2b4b1f9-1a1f-4393-af96-641a5dce3c4a" />
+        <classShapeMoniker Id="32c25111-3cda-4647-8ee9-74db3b80cac0" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(11.5 : 1.8862939453125); (11.5 : 2.125)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/DataType/DataType_ProblemCharacteristic" />
+      <nodes>
+        <classShapeMoniker Id="cf610b34-fb6c-487b-abfa-0f03eb70fb21" />
+        <classShapeMoniker Id="c2b4b1f9-1a1f-4393-af96-641a5dce3c4a" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(6.5 : 1.8862939453125); (6.5 : 2.125)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/ProblemClass/ProblemClass_Problem" />
+      <nodes>
+        <classShapeMoniker Id="ed58689e-36e3-4438-973b-afcb64f6bea9" />
+        <classShapeMoniker Id="367a45c9-887f-4faf-b038-d76007c4a052" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(5.5 : 3.74947903257485); (5.125 : 3.74947903257485)]" manuallyRouted="true" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Problem/Problem_ProblemData" />
+      <nodes>
+        <classShapeMoniker Id="367a45c9-887f-4faf-b038-d76007c4a052" />
+        <classShapeMoniker Id="b9cb0cc6-e33f-43bb-8436-cbeeeec8616f" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(5.125 : 5.43854147216927); (5.5 : 5.43854147216927)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Project/Project_Experiment" />
+      <nodes>
+        <classShapeMoniker Id="c7b79b94-b667-47e5-bcbc-23e2ee1daefa" />
+        <classShapeMoniker Id="f91d981c-4c4c-407a-aedd-bc0091bdd664" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(5.625 : 8.38544840494792); (5.125 : 8.38544840494792)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Run/Run_BlobResultValue" />
+      <nodes>
+        <classShapeMoniker Id="39967a3e-8ba4-4866-a63b-4c8d2fdb1e08" />
+        <classShapeMoniker Id="a9cd1c2f-1a1a-4c37-9fcf-646a051820f2" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(5.625 : 6.975); (5.125 : 6.975)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Run/Run_CharResultValue" />
+      <nodes>
+        <classShapeMoniker Id="39967a3e-8ba4-4866-a63b-4c8d2fdb1e08" />
+        <classShapeMoniker Id="9612fac1-ba28-43fc-83d4-5ff9fedef18d" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(5.625 : 7.475); (5.125 : 7.475)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Run/Run_FloatResultValue" />
+      <nodes>
+        <classShapeMoniker Id="39967a3e-8ba4-4866-a63b-4c8d2fdb1e08" />
+        <classShapeMoniker Id="1ace6e41-a514-40d5-951e-3d776d4ead12" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(5.625 : 7.975); (5.125 : 7.975)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Run/Run_IntResultValue" />
+      <nodes>
+        <classShapeMoniker Id="39967a3e-8ba4-4866-a63b-4c8d2fdb1e08" />
+        <classShapeMoniker Id="35203392-27ea-40f6-8435-094df5ed122a" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(2.875 : 6.39010394260909); (6.15729144646477 : 6.39010394260909); (6.15729144646477 : 6.75)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Client/Client_Run" />
+      <nodes>
+        <classShapeMoniker Id="e2c62cf2-d077-43f5-9393-a88252e74941" />
+        <classShapeMoniker Id="39967a3e-8ba4-4866-a63b-4c8d2fdb1e08" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(6.60052059728032 : 5.82859537760417); (6.60052059728032 : 6.75)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Experiment/Experiment_Run" />
+      <nodes>
+        <classShapeMoniker Id="f91d981c-4c4c-407a-aedd-bc0091bdd664" />
+        <classShapeMoniker Id="39967a3e-8ba4-4866-a63b-4c8d2fdb1e08" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(11.6182287601071 : 7.94399251302083); (11.6182287601071 : 8.80701432355366); (6.64843726223336 : 8.80701432355366); (6.64843726223336 : 8.52089680989583)]" manuallyRouted="true" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/User/User_Run" />
+      <nodes>
+        <classShapeMoniker Id="6abee4a0-9a54-4c51-bb1b-31061cb25f9f" />
+        <classShapeMoniker Id="39967a3e-8ba4-4866-a63b-4c8d2fdb1e08" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(8.125 : 1.11585934274246); (7.781067940508 : 1.11585934274246); (7.781067940508 : 2.28802075150734); (7.5 : 2.28802075150734)]" manuallyRouted="true" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/SolutionRepresentation/SolutionRepresentation_Problem" />
+      <nodes>
+        <classShapeMoniker Id="dd93cdce-fce0-4d14-96ac-e681aeca4fb5" />
+        <classShapeMoniker Id="367a45c9-887f-4faf-b038-d76007c4a052" />
+      </nodes>
+    </associationConnector>
+    <classShape Id="f67e70d4-ab36-48d1-854c-6ff3af78316c" absoluteBounds="0.625, 2.125, 2, 1.7708968098958331">
+      <DataClassMoniker Name="/OKBDataContext/Algorithm" />
+      <nestedChildShapes>
+        <elementListCompartment Id="a4c4d782-8c7e-4348-931f-b78ea951dfc6" absoluteBounds="0.64000000000000012, 2.5850000000000009, 1.9700000000000002, 1.2108968098958333" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(2.11458333333333 : 3.89589680989583); (2.11458333333333 : 4.225); (3.125 : 4.225)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Algorithm/Algorithm_Algorithm_Parameter" />
+      <nodes>
+        <classShapeMoniker Id="f67e70d4-ab36-48d1-854c-6ff3af78316c" />
+        <classShapeMoniker Id="e061f93d-509b-4bc6-901c-e6cfdfd69867" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(2.625 : 3.22239571809148); (3.125 : 3.22239571809148)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Algorithm/Algorithm_AlgorithmData" />
+      <nodes>
+        <classShapeMoniker Id="f67e70d4-ab36-48d1-854c-6ff3af78316c" />
+        <classShapeMoniker Id="729912f6-fb7b-4447-ae25-ffb25578bd13" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(1.78125 : 3.89589680989583); (1.78125 : 4.55838574358545); (5.32760436244929 : 4.55838574358545); (5.32760436244929 : 5.03929768880208); (5.5 : 5.03929768880208)]" manuallyRouted="true" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Algorithm/Algorithm_Experiment" />
+      <nodes>
+        <classShapeMoniker Id="f67e70d4-ab36-48d1-854c-6ff3af78316c" />
+        <classShapeMoniker Id="f91d981c-4c4c-407a-aedd-bc0091bdd664" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(1.5937475 : 1.8862939453125); (1.5937475 : 2.125)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/AlgorithmClass/AlgorithmClass_Algorithm" />
+      <nodes>
+        <classShapeMoniker Id="58c2dddf-6b8a-460e-b9f4-d04299b79210" />
+        <classShapeMoniker Id="f67e70d4-ab36-48d1-854c-6ff3af78316c" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(3.84531236248091 : 1.8862939453125); (3.84531236248091 : 2.57552074122553); (2.625 : 2.57552074122553)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Platform/Platform_Algorithm" />
+      <nodes>
+        <classShapeMoniker Id="6c3d2cbe-8fb3-49bd-9390-53177f3dc5fa" />
+        <classShapeMoniker Id="f67e70d4-ab36-48d1-854c-6ff3af78316c" />
+      </nodes>
+    </associationConnector>
+    <classShape Id="8aec4d8c-1515-4c40-a919-d4f1fb6e628e" isExpanded="false" absoluteBounds="0.5, 4.75, 2, 0.45">
+      <DataClassMoniker Name="/OKBDataContext/Algorithm_Result" />
+      <nestedChildShapes>
+        <elementListCompartment Id="a1b54f52-89d9-4ee8-8e80-064346efaeb8" absoluteBounds="0.51500000000000012, 5.2100000000000009, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(1.51041666666667 : 3.89589680989583); (1.51041666666667 : 4.75)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Algorithm/Algorithm_Algorithm_Result" />
+      <nodes>
+        <classShapeMoniker Id="f67e70d4-ab36-48d1-854c-6ff3af78316c" />
+        <classShapeMoniker Id="8aec4d8c-1515-4c40-a919-d4f1fb6e628e" />
+      </nodes>
+    </associationConnector>
+    <classShape Id="d65c7f25-b8f2-4a99-a007-7956d88e0136" absoluteBounds="0.5, 6.875, 2, 1.5785953776041666">
+      <DataClassMoniker Name="/OKBDataContext/Result" />
+      <nestedChildShapes>
+        <elementListCompartment Id="1f836c60-b998-4e30-a7e7-325d7ca235ba" absoluteBounds="0.51500000000000012, 7.3350000000000009, 1.9700000000000002, 1.0185953776041665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(2.5 : 8.35179768880208); (3.125 : 8.35179768880208)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Result/Result_BlobResultValue" />
+      <nodes>
+        <classShapeMoniker Id="d65c7f25-b8f2-4a99-a007-7956d88e0136" />
+        <classShapeMoniker Id="a9cd1c2f-1a1a-4c37-9fcf-646a051820f2" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(2.5 : 7.0375); (3.125 : 7.0375)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Result/Result_CharResultValue" />
+      <nodes>
+        <classShapeMoniker Id="d65c7f25-b8f2-4a99-a007-7956d88e0136" />
+        <classShapeMoniker Id="9612fac1-ba28-43fc-83d4-5ff9fedef18d" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(2.5 : 7.475); (3.125 : 7.475)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Result/Result_FloatResultValue" />
+      <nodes>
+        <classShapeMoniker Id="d65c7f25-b8f2-4a99-a007-7956d88e0136" />
+        <classShapeMoniker Id="1ace6e41-a514-40d5-951e-3d776d4ead12" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(2.5 : 7.975); (3.125 : 7.975)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Result/Result_IntResultValue" />
+      <nodes>
+        <classShapeMoniker Id="d65c7f25-b8f2-4a99-a007-7956d88e0136" />
+        <classShapeMoniker Id="35203392-27ea-40f6-8435-094df5ed122a" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(0.65625 : 6.875); (0.65625 : 5.2)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Result/Result_Algorithm_Result" />
+      <nodes>
+        <classShapeMoniker Id="d65c7f25-b8f2-4a99-a007-7956d88e0136" />
+        <classShapeMoniker Id="8aec4d8c-1515-4c40-a919-d4f1fb6e628e" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(12.5 : 1.09243584011652); (12.9287500578379 : 1.09243584011652); (12.9287500578379 : 8.86403544267509); (1.5 : 8.86403544267509); (1.5 : 8.4535953776042)]" manuallyRouted="true" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/DataType/DataType_Result" />
+      <nodes>
+        <classShapeMoniker Id="cf610b34-fb6c-487b-abfa-0f03eb70fb21" />
+        <classShapeMoniker Id="d65c7f25-b8f2-4a99-a007-7956d88e0136" />
+      </nodes>
+    </associationConnector>
+    <classShape Id="c3843138-a09c-4d9e-b5e2-89b1278cb6d9" absoluteBounds="8.125, 5.75, 2, 1.5785953776041666">
+      <DataClassMoniker Name="/OKBDataContext/OperatorParameterValue" />
+      <nestedChildShapes>
+        <elementListCompartment Id="2e8421ec-aebe-4496-b824-43d2151bd4a8" absoluteBounds="8.14, 6.21, 1.9700000000000002, 1.0185953776041665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(12.5 : 1.2225692630771); (12.8857453324488 : 1.2225692630771); (12.8857453324488 : 6.57291666666667); (10.125 : 6.57291666666667)]" manuallyRouted="true" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/DataType/DataType_OperatorParameterValue" />
+      <nodes>
+        <classShapeMoniker Id="cf610b34-fb6c-487b-abfa-0f03eb70fb21" />
+        <classShapeMoniker Id="c3843138-a09c-4d9e-b5e2-89b1278cb6d9" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(7.5 : 5.69791666666667); (7.8 : 5.69791666666667); (7.8 : 6.17708333333333); (8.125 : 6.17708333333333)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Experiment/Experiment_OperatorParameterValue" />
+      <nodes>
+        <classShapeMoniker Id="f91d981c-4c4c-407a-aedd-bc0091bdd664" />
+        <classShapeMoniker Id="c3843138-a09c-4d9e-b5e2-89b1278cb6d9" />
+      </nodes>
+    </associationConnector>
+    <classShape Id="1d1e6aa3-ddf1-4f64-921e-1326f3664cef" absoluteBounds="10.625, 4.375, 2, 1.5785953776041666">
+      <DataClassMoniker Name="/OKBDataContext/Parameter" />
+      <nestedChildShapes>
+        <elementListCompartment Id="ee2d06e4-4775-4c1e-85fa-26b0d9636fdf" absoluteBounds="10.64, 4.835, 1.9700000000000002, 1.0185953776041665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(11.0927079366272 : 4.375); (11.0927079366272 : 4.18072901715215); (5.125 : 4.18072901715215)]" manuallyRouted="true" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Parameter/Parameter_Algorithm_Parameter" />
+      <nodes>
+        <classShapeMoniker Id="1d1e6aa3-ddf1-4f64-921e-1326f3664cef" />
+        <classShapeMoniker Id="e061f93d-509b-4bc6-901c-e6cfdfd69867" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(10.625 : 4.975); (10.125 : 4.975)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Parameter/Parameter_CharParameterValue" />
+      <nodes>
+        <classShapeMoniker Id="1d1e6aa3-ddf1-4f64-921e-1326f3664cef" />
+        <classShapeMoniker Id="a782534f-cc38-43ef-bf3a-297bfdf111d9" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(10.625 : 4.5375); (10.125 : 4.5375)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Parameter/Parameter_FloatParameterValue" />
+      <nodes>
+        <classShapeMoniker Id="1d1e6aa3-ddf1-4f64-921e-1326f3664cef" />
+        <classShapeMoniker Id="51fb443c-2ed1-4364-9dc3-84a606c921f5" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(10.625 : 5.475); (10.125 : 5.475)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Parameter/Parameter_IntParameterValue" />
+      <nodes>
+        <classShapeMoniker Id="1d1e6aa3-ddf1-4f64-921e-1326f3664cef" />
+        <classShapeMoniker Id="2b634d14-6f55-4540-adf5-d208acc74946" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(11.7395833333333 : 4.375); (11.7395833333333 : 3.88929818880208); (10.125 : 3.88929818880208)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Parameter/Parameter_Problem_Parameter" />
+      <nodes>
+        <classShapeMoniker Id="1d1e6aa3-ddf1-4f64-921e-1326f3664cef" />
+        <classShapeMoniker Id="bf075940-80da-477a-9706-a3dd0ffba1da" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(10.625 : 5.74554968880208); (10.385 : 5.74554968880208); (10.385 : 6.21875); (10.125 : 6.21875)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/Parameter/Parameter_OperatorParameterValue" />
+      <nodes>
+        <classShapeMoniker Id="1d1e6aa3-ddf1-4f64-921e-1326f3664cef" />
+        <classShapeMoniker Id="c3843138-a09c-4d9e-b5e2-89b1278cb6d9" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(12.5 : 1.35955181356193); (12.8545080463062 : 1.35955181356193); (12.8545080463062 : 5.36855088795836); (12.625 : 5.36855088795836)]" manuallyRouted="true" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/OKBDataContext/DataType/DataType_Parameter" />
+      <nodes>
+        <classShapeMoniker Id="cf610b34-fb6c-487b-abfa-0f03eb70fb21" />
+        <classShapeMoniker Id="1d1e6aa3-ddf1-4f64-921e-1326f3664cef" />
+      </nodes>
+    </associationConnector>
+  </nestedChildShapes>
+</ordesignerObjectsDiagram>
Index: trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/OKB.generated.cs
===================================================================
--- trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/OKB.generated.cs	(revision 4276)
+++ trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/OKB.generated.cs	(revision 4276)
@@ -0,0 +1,7355 @@
+﻿#pragma warning disable 1591
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by LINQ to SQL template for T4 C#
+//     Generated at 08/23/2010 01:35:16
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+using System;
+using System.ComponentModel;
+using System.Data.Linq;
+using System.Data.Linq.Mapping;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{
+	[DatabaseAttribute(Name=@"OKB")]
+	public partial class OKBDataContext : DataContext
+	{
+		private static MappingSource mappingSource = new AttributeMappingSource();
+		
+		#region Extensibility Method Definitions
+		partial void OnCreated();
+		partial void InsertUser(User instance);
+		partial void UpdateUser(User instance);
+		partial void DeleteUser(User instance);
+		partial void InsertAlgorithm_Parameter(Algorithm_Parameter instance);
+		partial void UpdateAlgorithm_Parameter(Algorithm_Parameter instance);
+		partial void DeleteAlgorithm_Parameter(Algorithm_Parameter instance);
+		partial void InsertAlgorithmClass(AlgorithmClass instance);
+		partial void UpdateAlgorithmClass(AlgorithmClass instance);
+		partial void DeleteAlgorithmClass(AlgorithmClass instance);
+		partial void InsertAlgorithmData(AlgorithmData instance);
+		partial void UpdateAlgorithmData(AlgorithmData instance);
+		partial void DeleteAlgorithmData(AlgorithmData instance);
+		partial void InsertBlobResultValue(BlobResultValue instance);
+		partial void UpdateBlobResultValue(BlobResultValue instance);
+		partial void DeleteBlobResultValue(BlobResultValue instance);
+		partial void InsertCharParameterValue(CharParameterValue instance);
+		partial void UpdateCharParameterValue(CharParameterValue instance);
+		partial void DeleteCharParameterValue(CharParameterValue instance);
+		partial void InsertCharProblemCharacteristicValue(CharProblemCharacteristicValue instance);
+		partial void UpdateCharProblemCharacteristicValue(CharProblemCharacteristicValue instance);
+		partial void DeleteCharProblemCharacteristicValue(CharProblemCharacteristicValue instance);
+		partial void InsertCharResultValue(CharResultValue instance);
+		partial void UpdateCharResultValue(CharResultValue instance);
+		partial void DeleteCharResultValue(CharResultValue instance);
+		partial void InsertClient(Client instance);
+		partial void UpdateClient(Client instance);
+		partial void DeleteClient(Client instance);
+		partial void InsertDataType(DataType instance);
+		partial void UpdateDataType(DataType instance);
+		partial void DeleteDataType(DataType instance);
+		partial void InsertExperiment(Experiment instance);
+		partial void UpdateExperiment(Experiment instance);
+		partial void DeleteExperiment(Experiment instance);
+		partial void InsertExperimentCreator(ExperimentCreator instance);
+		partial void UpdateExperimentCreator(ExperimentCreator instance);
+		partial void DeleteExperimentCreator(ExperimentCreator instance);
+		partial void InsertFloatParameterValue(FloatParameterValue instance);
+		partial void UpdateFloatParameterValue(FloatParameterValue instance);
+		partial void DeleteFloatParameterValue(FloatParameterValue instance);
+		partial void InsertFloatProblemCharacteristicValue(FloatProblemCharacteristicValue instance);
+		partial void UpdateFloatProblemCharacteristicValue(FloatProblemCharacteristicValue instance);
+		partial void DeleteFloatProblemCharacteristicValue(FloatProblemCharacteristicValue instance);
+		partial void InsertFloatResultValue(FloatResultValue instance);
+		partial void UpdateFloatResultValue(FloatResultValue instance);
+		partial void DeleteFloatResultValue(FloatResultValue instance);
+		partial void InsertIntParameterValue(IntParameterValue instance);
+		partial void UpdateIntParameterValue(IntParameterValue instance);
+		partial void DeleteIntParameterValue(IntParameterValue instance);
+		partial void InsertIntProblemCharacteristicValue(IntProblemCharacteristicValue instance);
+		partial void UpdateIntProblemCharacteristicValue(IntProblemCharacteristicValue instance);
+		partial void DeleteIntProblemCharacteristicValue(IntProblemCharacteristicValue instance);
+		partial void InsertIntResultValue(IntResultValue instance);
+		partial void UpdateIntResultValue(IntResultValue instance);
+		partial void DeleteIntResultValue(IntResultValue instance);
+		partial void InsertPlatform(Platform instance);
+		partial void UpdatePlatform(Platform instance);
+		partial void DeletePlatform(Platform instance);
+		partial void InsertProblem(Problem instance);
+		partial void UpdateProblem(Problem instance);
+		partial void DeleteProblem(Problem instance);
+		partial void InsertProblem_Parameter(Problem_Parameter instance);
+		partial void UpdateProblem_Parameter(Problem_Parameter instance);
+		partial void DeleteProblem_Parameter(Problem_Parameter instance);
+		partial void InsertProblemCharacteristic(ProblemCharacteristic instance);
+		partial void UpdateProblemCharacteristic(ProblemCharacteristic instance);
+		partial void DeleteProblemCharacteristic(ProblemCharacteristic instance);
+		partial void InsertProblemClass(ProblemClass instance);
+		partial void UpdateProblemClass(ProblemClass instance);
+		partial void DeleteProblemClass(ProblemClass instance);
+		partial void InsertProblemData(ProblemData instance);
+		partial void UpdateProblemData(ProblemData instance);
+		partial void DeleteProblemData(ProblemData instance);
+		partial void InsertProject(Project instance);
+		partial void UpdateProject(Project instance);
+		partial void DeleteProject(Project instance);
+		partial void InsertRun(Run instance);
+		partial void UpdateRun(Run instance);
+		partial void DeleteRun(Run instance);
+		partial void InsertSolutionRepresentation(SolutionRepresentation instance);
+		partial void UpdateSolutionRepresentation(SolutionRepresentation instance);
+		partial void DeleteSolutionRepresentation(SolutionRepresentation instance);
+		partial void InsertAlgorithm(Algorithm instance);
+		partial void UpdateAlgorithm(Algorithm instance);
+		partial void DeleteAlgorithm(Algorithm instance);
+		partial void InsertAlgorithm_Result(Algorithm_Result instance);
+		partial void UpdateAlgorithm_Result(Algorithm_Result instance);
+		partial void DeleteAlgorithm_Result(Algorithm_Result instance);
+		partial void InsertResult(Result instance);
+		partial void UpdateResult(Result instance);
+		partial void DeleteResult(Result instance);
+		partial void InsertOperatorParameterValue(OperatorParameterValue instance);
+		partial void UpdateOperatorParameterValue(OperatorParameterValue instance);
+		partial void DeleteOperatorParameterValue(OperatorParameterValue instance);
+		partial void InsertParameter(Parameter instance);
+		partial void UpdateParameter(Parameter instance);
+		partial void DeleteParameter(Parameter instance);
+		#endregion
+		
+		#region Construction
+		public OKBDataContext() :
+			base(global::HeuristicLab.Services.OKB.DataAccess.Properties.Settings.Default.OKBConnectionString, mappingSource)
+		{
+			OnCreated();
+		}
+	
+		public OKBDataContext(string connection) :
+			base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public OKBDataContext(System.Data.IDbConnection connection) :
+			base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public OKBDataContext(string connection, MappingSource mappingSource) :
+			base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public OKBDataContext(System.Data.IDbConnection connection, MappingSource mappingSource) :
+			base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		#endregion
+		
+		#region Tables
+		public Table<User> Users
+		{
+			get { return GetTable<User>(); }
+		}
+		
+		public Table<Algorithm_Parameter> Algorithm_Parameters
+		{
+			get { return GetTable<Algorithm_Parameter>(); }
+		}
+		
+		public Table<AlgorithmClass> AlgorithmClasses
+		{
+			get { return GetTable<AlgorithmClass>(); }
+		}
+		
+		public Table<AlgorithmData> AlgorithmDatas
+		{
+			get { return GetTable<AlgorithmData>(); }
+		}
+		
+		public Table<BlobResultValue> BlobResultValues
+		{
+			get { return GetTable<BlobResultValue>(); }
+		}
+		
+		public Table<CharParameterValue> CharParameterValues
+		{
+			get { return GetTable<CharParameterValue>(); }
+		}
+		
+		public Table<CharProblemCharacteristicValue> CharProblemCharacteristicValues
+		{
+			get { return GetTable<CharProblemCharacteristicValue>(); }
+		}
+		
+		public Table<CharResultValue> CharResultValues
+		{
+			get { return GetTable<CharResultValue>(); }
+		}
+		
+		public Table<Client> Clients
+		{
+			get { return GetTable<Client>(); }
+		}
+		
+		public Table<DataType> DataTypes
+		{
+			get { return GetTable<DataType>(); }
+		}
+		
+		public Table<Experiment> Experiments
+		{
+			get { return GetTable<Experiment>(); }
+		}
+		
+		public Table<ExperimentCreator> ExperimentCreators
+		{
+			get { return GetTable<ExperimentCreator>(); }
+		}
+		
+		public Table<FloatParameterValue> FloatParameterValues
+		{
+			get { return GetTable<FloatParameterValue>(); }
+		}
+		
+		public Table<FloatProblemCharacteristicValue> FloatProblemCharacteristicValues
+		{
+			get { return GetTable<FloatProblemCharacteristicValue>(); }
+		}
+		
+		public Table<FloatResultValue> FloatResultValues
+		{
+			get { return GetTable<FloatResultValue>(); }
+		}
+		
+		public Table<IntParameterValue> IntParameterValues
+		{
+			get { return GetTable<IntParameterValue>(); }
+		}
+		
+		public Table<IntProblemCharacteristicValue> IntProblemCharacteristicValues
+		{
+			get { return GetTable<IntProblemCharacteristicValue>(); }
+		}
+		
+		public Table<IntResultValue> IntResultValues
+		{
+			get { return GetTable<IntResultValue>(); }
+		}
+		
+		public Table<Platform> Platforms
+		{
+			get { return GetTable<Platform>(); }
+		}
+		
+		public Table<Problem> Problems
+		{
+			get { return GetTable<Problem>(); }
+		}
+		
+		public Table<Problem_Parameter> Problem_Parameters
+		{
+			get { return GetTable<Problem_Parameter>(); }
+		}
+		
+		public Table<ProblemCharacteristic> ProblemCharacteristics
+		{
+			get { return GetTable<ProblemCharacteristic>(); }
+		}
+		
+		public Table<ProblemClass> ProblemClasses
+		{
+			get { return GetTable<ProblemClass>(); }
+		}
+		
+		public Table<ProblemData> ProblemDatas
+		{
+			get { return GetTable<ProblemData>(); }
+		}
+		
+		public Table<Project> Projects
+		{
+			get { return GetTable<Project>(); }
+		}
+		
+		public Table<Run> Runs
+		{
+			get { return GetTable<Run>(); }
+		}
+		
+		public Table<SolutionRepresentation> SolutionRepresentations
+		{
+			get { return GetTable<SolutionRepresentation>(); }
+		}
+		
+		public Table<Algorithm> Algorithms
+		{
+			get { return GetTable<Algorithm>(); }
+		}
+		
+		public Table<Algorithm_Result> Algorithm_Results
+		{
+			get { return GetTable<Algorithm_Result>(); }
+		}
+		
+		public Table<Result> Results
+		{
+			get { return GetTable<Result>(); }
+		}
+		
+		public Table<OperatorParameterValue> OperatorParameterValues
+		{
+			get { return GetTable<OperatorParameterValue>(); }
+		}
+		
+		public Table<Parameter> Parameters
+		{
+			get { return GetTable<Parameter>(); }
+		}
+		
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.[User]")]
+[KnownType(typeof(User))]	public partial class User : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public User()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_ExperimentCreators = new EntitySet<ExperimentCreator>(attach_ExperimentCreators, detach_ExperimentCreators);
+			_Runs = new EntitySet<Run>(attach_Runs, detach_Runs);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnIdChanging(Guid value);
+		partial void OnIdChanged();
+		private Guid _Id;
+		[Column(Storage=@"_Id", DbType=@"UniqueIdentifier NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public Guid Id
+		{
+			get { return _Id; }
+			set {
+				if (_Id != value) {
+					OnIdChanging(value);
+					SendPropertyChanging();
+					_Id = value;
+					SendPropertyChanged("Id");
+					OnIdChanged();
+				}
+			}
+		}
+		
+		partial void OnNameChanging(string value);
+		partial void OnNameChanged();
+		private string _Name;
+		[Column(Storage=@"_Name", DbType=@"VarChar(200) NOT NULL", CanBeNull=false)]
+		[DataMember(Order=2)]
+		public string Name
+		{
+			get { return _Name; }
+			set {
+				if (_Name != value) {
+					OnNameChanging(value);
+					SendPropertyChanging();
+					_Name = value;
+					SendPropertyChanged("Name");
+					OnNameChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntitySet<ExperimentCreator> _ExperimentCreators;
+		[Association(Name=@"User_ExperimentCreator", Storage=@"_ExperimentCreators", ThisKey=@"Id", OtherKey=@"UserId")]
+		[DataMember(Order=3, EmitDefaultValue=false)]
+		public EntitySet<ExperimentCreator> ExperimentCreators
+		{
+			get {
+				if (serializing && !_ExperimentCreators.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _ExperimentCreators;
+			}
+			set {
+				_ExperimentCreators.Assign(value);
+			}
+		}
+
+		private void attach_ExperimentCreators(ExperimentCreator entity)
+		{
+			SendPropertyChanging();
+			entity.User = this;
+		}
+		
+		private void detach_ExperimentCreators(ExperimentCreator entity)
+		{
+			SendPropertyChanging();
+			entity.User = null;
+		}
+		private EntitySet<Run> _Runs;
+		[Association(Name=@"User_Run", Storage=@"_Runs", ThisKey=@"Id", OtherKey=@"UserId")]
+		[DataMember(Order=4, EmitDefaultValue=false)]
+		public EntitySet<Run> Runs
+		{
+			get {
+				if (serializing && !_Runs.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _Runs;
+			}
+			set {
+				_Runs.Assign(value);
+			}
+		}
+
+		private void attach_Runs(Run entity)
+		{
+			SendPropertyChanging();
+			entity.User = this;
+		}
+		
+		private void detach_Runs(Run entity)
+		{
+			SendPropertyChanging();
+			entity.User = null;
+		}
+		#endregion
+		
+		#region Serialization
+		private bool serializing;
+		
+		[OnSerializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerializing(StreamingContext context)
+		{
+			serializing = true;
+		}
+		
+		[OnSerialized()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerialized(StreamingContext context)
+		{
+			serializing = false;
+		}
+		
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.Algorithm_Parameter")]
+[KnownType(typeof(Algorithm_Parameter))]	public partial class Algorithm_Parameter : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public Algorithm_Parameter()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Parameter = default(EntityRef<Parameter>);
+			_Algorithm = default(EntityRef<Algorithm>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnAlgorithmIdChanging(int value);
+		partial void OnAlgorithmIdChanged();
+		private int _AlgorithmId;
+		[Column(Storage=@"_AlgorithmId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int AlgorithmId
+		{
+			get { return _AlgorithmId; }
+			set {
+				if (_AlgorithmId != value) {
+					if (_Algorithm.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnAlgorithmIdChanging(value);
+					SendPropertyChanging();
+					_AlgorithmId = value;
+					SendPropertyChanged("AlgorithmId");
+					OnAlgorithmIdChanged();
+				}
+			}
+		}
+		
+		partial void OnParameterIdChanging(int value);
+		partial void OnParameterIdChanged();
+		private int _ParameterId;
+		[Column(Storage=@"_ParameterId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=2)]
+		public int ParameterId
+		{
+			get { return _ParameterId; }
+			set {
+				if (_ParameterId != value) {
+					if (_Parameter.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnParameterIdChanging(value);
+					SendPropertyChanging();
+					_ParameterId = value;
+					SendPropertyChanged("ParameterId");
+					OnParameterIdChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntityRef<Parameter> _Parameter;
+		[Association(Name=@"Parameter_Algorithm_Parameter", Storage=@"_Parameter", ThisKey=@"ParameterId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=3, EmitDefaultValue=false)]
+		public Parameter Parameter
+		{
+			get {
+				return _Parameter.Entity;
+			}
+			set {
+				Parameter previousValue = _Parameter.Entity;
+				if ((previousValue != value) || (!_Parameter.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Parameter.Entity = null;
+						previousValue.Algorithm_Parameters.Remove(this);
+					}
+					_Parameter.Entity = value;
+					if (value != null) {
+						value.Algorithm_Parameters.Add(this);
+						_ParameterId = value.Id;
+					}
+					else {
+						_ParameterId = default(int);
+					}
+					SendPropertyChanged("Parameter");
+				}
+			}
+		}
+
+		private EntityRef<Algorithm> _Algorithm;
+		[Association(Name=@"Algorithm_Algorithm_Parameter", Storage=@"_Algorithm", ThisKey=@"AlgorithmId", OtherKey=@"Id", IsForeignKey=true)]
+		[DataMember(Order=4, EmitDefaultValue=false)]
+		public Algorithm Algorithm
+		{
+			get {
+				return _Algorithm.Entity;
+			}
+			set {
+				Algorithm previousValue = _Algorithm.Entity;
+				if ((previousValue != value) || (!_Algorithm.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Algorithm.Entity = null;
+						previousValue.Algorithm_Parameters.Remove(this);
+					}
+					_Algorithm.Entity = value;
+					if (value != null) {
+						value.Algorithm_Parameters.Add(this);
+						_AlgorithmId = value.Id;
+					}
+					else {
+						_AlgorithmId = default(int);
+					}
+					SendPropertyChanged("Algorithm");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.AlgorithmClass")]
+[KnownType(typeof(AlgorithmClass))]	public partial class AlgorithmClass : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public AlgorithmClass()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Algorithms = new EntitySet<Algorithm>(attach_Algorithms, detach_Algorithms);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnIdChanging(int value);
+		partial void OnIdChanged();
+		private int _Id;
+		[Column(Storage=@"_Id", AutoSync=AutoSync.OnInsert, DbType=@"Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int Id
+		{
+			get { return _Id; }
+			set {
+				if (_Id != value) {
+					OnIdChanging(value);
+					SendPropertyChanging();
+					_Id = value;
+					SendPropertyChanged("Id");
+					OnIdChanged();
+				}
+			}
+		}
+		
+		partial void OnNameChanging(string value);
+		partial void OnNameChanged();
+		private string _Name;
+		[Column(Storage=@"_Name", DbType=@"VarChar(200) NOT NULL", CanBeNull=false)]
+		[DataMember(Order=2)]
+		public string Name
+		{
+			get { return _Name; }
+			set {
+				if (_Name != value) {
+					OnNameChanging(value);
+					SendPropertyChanging();
+					_Name = value;
+					SendPropertyChanged("Name");
+					OnNameChanged();
+				}
+			}
+		}
+		
+		partial void OnDescriptionChanging(string value);
+		partial void OnDescriptionChanged();
+		private string _Description;
+		[Column(Storage=@"_Description", DbType=@"VarChar(MAX)")]
+		[DataMember(Order=3)]
+		public string Description
+		{
+			get { return _Description; }
+			set {
+				if (_Description != value) {
+					OnDescriptionChanging(value);
+					SendPropertyChanging();
+					_Description = value;
+					SendPropertyChanged("Description");
+					OnDescriptionChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntitySet<Algorithm> _Algorithms;
+		[Association(Name=@"AlgorithmClass_Algorithm", Storage=@"_Algorithms", ThisKey=@"Id", OtherKey=@"AlgorithmClassId")]
+		[DataMember(Order=4, EmitDefaultValue=false)]
+		public EntitySet<Algorithm> Algorithms
+		{
+			get {
+				if (serializing && !_Algorithms.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _Algorithms;
+			}
+			set {
+				_Algorithms.Assign(value);
+			}
+		}
+
+		private void attach_Algorithms(Algorithm entity)
+		{
+			SendPropertyChanging();
+			entity.AlgorithmClass = this;
+		}
+		
+		private void detach_Algorithms(Algorithm entity)
+		{
+			SendPropertyChanging();
+			entity.AlgorithmClass = null;
+		}
+		#endregion
+		
+		#region Serialization
+		private bool serializing;
+		
+		[OnSerializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerializing(StreamingContext context)
+		{
+			serializing = true;
+		}
+		
+		[OnSerialized()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerialized(StreamingContext context)
+		{
+			serializing = false;
+		}
+		
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.AlgorithmData")]
+[KnownType(typeof(AlgorithmData))]	public partial class AlgorithmData : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public AlgorithmData()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Algorithm = default(EntityRef<Algorithm>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnAlgorithmIdChanging(int value);
+		partial void OnAlgorithmIdChanged();
+		private int _AlgorithmId;
+		[Column(Storage=@"_AlgorithmId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int AlgorithmId
+		{
+			get { return _AlgorithmId; }
+			set {
+				if (_AlgorithmId != value) {
+					if (_Algorithm.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnAlgorithmIdChanging(value);
+					SendPropertyChanging();
+					_AlgorithmId = value;
+					SendPropertyChanged("AlgorithmId");
+					OnAlgorithmIdChanged();
+				}
+			}
+		}
+		
+		partial void OnDataChanging(Binary value);
+		partial void OnDataChanged();
+		private Binary _Data;
+		[Column(Storage=@"_Data", DbType=@"VarBinary(MAX) NOT NULL", CanBeNull=false, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=2)]
+		public Binary Data
+		{
+			get { return _Data; }
+			set {
+				if (_Data != value) {
+					OnDataChanging(value);
+					SendPropertyChanging();
+					_Data = value;
+					SendPropertyChanged("Data");
+					OnDataChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntityRef<Algorithm> _Algorithm;
+		[Association(Name=@"Algorithm_AlgorithmData", Storage=@"_Algorithm", ThisKey=@"AlgorithmId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=3, EmitDefaultValue=false)]
+		public Algorithm Algorithm
+		{
+			get {
+				return _Algorithm.Entity;
+			}
+			set {
+				Algorithm previousValue = _Algorithm.Entity;
+				if ((previousValue != value) || (!_Algorithm.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Algorithm.Entity = null;
+						previousValue.AlgorithmData = null;
+					}
+					_Algorithm.Entity = value;
+					if (value != null) {
+						value.AlgorithmData = this;
+						_AlgorithmId = value.Id;
+					}
+					else {
+						_AlgorithmId = default(int);
+					}
+					SendPropertyChanged("Algorithm");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.BlobResultValue")]
+[KnownType(typeof(BlobResultValue))]	public partial class BlobResultValue : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public BlobResultValue()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Run = default(EntityRef<Run>);
+			_Result = default(EntityRef<Result>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnResultIdChanging(int value);
+		partial void OnResultIdChanged();
+		private int _ResultId;
+		[Column(Storage=@"_ResultId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int ResultId
+		{
+			get { return _ResultId; }
+			set {
+				if (_ResultId != value) {
+					if (_Result.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnResultIdChanging(value);
+					SendPropertyChanging();
+					_ResultId = value;
+					SendPropertyChanged("ResultId");
+					OnResultIdChanged();
+				}
+			}
+		}
+		
+		partial void OnRunIdChanging(int value);
+		partial void OnRunIdChanged();
+		private int _RunId;
+		[Column(Storage=@"_RunId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=2)]
+		public int RunId
+		{
+			get { return _RunId; }
+			set {
+				if (_RunId != value) {
+					if (_Run.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnRunIdChanging(value);
+					SendPropertyChanging();
+					_RunId = value;
+					SendPropertyChanged("RunId");
+					OnRunIdChanged();
+				}
+			}
+		}
+		
+		partial void OnValueChanging(Binary value);
+		partial void OnValueChanged();
+		private Binary _Value;
+		[Column(Storage=@"_Value", DbType=@"VarBinary(MAX) NOT NULL", CanBeNull=false, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=3)]
+		public Binary Value
+		{
+			get { return _Value; }
+			set {
+				if (_Value != value) {
+					OnValueChanging(value);
+					SendPropertyChanging();
+					_Value = value;
+					SendPropertyChanged("Value");
+					OnValueChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntityRef<Run> _Run;
+		[Association(Name=@"Run_BlobResultValue", Storage=@"_Run", ThisKey=@"RunId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=4, EmitDefaultValue=false)]
+		public Run Run
+		{
+			get {
+				return _Run.Entity;
+			}
+			set {
+				Run previousValue = _Run.Entity;
+				if ((previousValue != value) || (!_Run.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Run.Entity = null;
+						previousValue.BlobResultValues.Remove(this);
+					}
+					_Run.Entity = value;
+					if (value != null) {
+						value.BlobResultValues.Add(this);
+						_RunId = value.Id;
+					}
+					else {
+						_RunId = default(int);
+					}
+					SendPropertyChanged("Run");
+				}
+			}
+		}
+
+		private EntityRef<Result> _Result;
+		[Association(Name=@"Result_BlobResultValue", Storage=@"_Result", ThisKey=@"ResultId", OtherKey=@"Id", IsForeignKey=true)]
+		[DataMember(Order=5, EmitDefaultValue=false)]
+		public Result Result
+		{
+			get {
+				return _Result.Entity;
+			}
+			set {
+				Result previousValue = _Result.Entity;
+				if ((previousValue != value) || (!_Result.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Result.Entity = null;
+						previousValue.BlobResultValues.Remove(this);
+					}
+					_Result.Entity = value;
+					if (value != null) {
+						value.BlobResultValues.Add(this);
+						_ResultId = value.Id;
+					}
+					else {
+						_ResultId = default(int);
+					}
+					SendPropertyChanged("Result");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.CharParameterValue")]
+[KnownType(typeof(CharParameterValue))]	public partial class CharParameterValue : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public CharParameterValue()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Experiment = default(EntityRef<Experiment>);
+			_Parameter = default(EntityRef<Parameter>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnParameterIdChanging(int value);
+		partial void OnParameterIdChanged();
+		private int _ParameterId;
+		[Column(Storage=@"_ParameterId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int ParameterId
+		{
+			get { return _ParameterId; }
+			set {
+				if (_ParameterId != value) {
+					if (_Parameter.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnParameterIdChanging(value);
+					SendPropertyChanging();
+					_ParameterId = value;
+					SendPropertyChanged("ParameterId");
+					OnParameterIdChanged();
+				}
+			}
+		}
+		
+		partial void OnExperimentIdChanging(int value);
+		partial void OnExperimentIdChanged();
+		private int _ExperimentId;
+		[Column(Storage=@"_ExperimentId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=2)]
+		public int ExperimentId
+		{
+			get { return _ExperimentId; }
+			set {
+				if (_ExperimentId != value) {
+					if (_Experiment.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnExperimentIdChanging(value);
+					SendPropertyChanging();
+					_ExperimentId = value;
+					SendPropertyChanged("ExperimentId");
+					OnExperimentIdChanged();
+				}
+			}
+		}
+		
+		partial void OnValueChanging(string value);
+		partial void OnValueChanged();
+		private string _Value;
+		[Column(Storage=@"_Value", DbType=@"VarChar(MAX) NOT NULL", CanBeNull=false)]
+		[DataMember(Order=3)]
+		public string Value
+		{
+			get { return _Value; }
+			set {
+				if (_Value != value) {
+					OnValueChanging(value);
+					SendPropertyChanging();
+					_Value = value;
+					SendPropertyChanged("Value");
+					OnValueChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntityRef<Experiment> _Experiment;
+		[Association(Name=@"Experiment_CharParameterValue", Storage=@"_Experiment", ThisKey=@"ExperimentId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=4, EmitDefaultValue=false)]
+		public Experiment Experiment
+		{
+			get {
+				return _Experiment.Entity;
+			}
+			set {
+				Experiment previousValue = _Experiment.Entity;
+				if ((previousValue != value) || (!_Experiment.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Experiment.Entity = null;
+						previousValue.CharParameterValues.Remove(this);
+					}
+					_Experiment.Entity = value;
+					if (value != null) {
+						value.CharParameterValues.Add(this);
+						_ExperimentId = value.Id;
+					}
+					else {
+						_ExperimentId = default(int);
+					}
+					SendPropertyChanged("Experiment");
+				}
+			}
+		}
+
+		private EntityRef<Parameter> _Parameter;
+		[Association(Name=@"Parameter_CharParameterValue", Storage=@"_Parameter", ThisKey=@"ParameterId", OtherKey=@"Id", IsForeignKey=true)]
+		[DataMember(Order=5, EmitDefaultValue=false)]
+		public Parameter Parameter
+		{
+			get {
+				return _Parameter.Entity;
+			}
+			set {
+				Parameter previousValue = _Parameter.Entity;
+				if ((previousValue != value) || (!_Parameter.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Parameter.Entity = null;
+						previousValue.CharParameterValues.Remove(this);
+					}
+					_Parameter.Entity = value;
+					if (value != null) {
+						value.CharParameterValues.Add(this);
+						_ParameterId = value.Id;
+					}
+					else {
+						_ParameterId = default(int);
+					}
+					SendPropertyChanged("Parameter");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.CharProblemCharacteristicValue")]
+[KnownType(typeof(CharProblemCharacteristicValue))]	public partial class CharProblemCharacteristicValue : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public CharProblemCharacteristicValue()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Problem = default(EntityRef<Problem>);
+			_ProblemCharacteristic = default(EntityRef<ProblemCharacteristic>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnProblemCharacteristicIdChanging(int value);
+		partial void OnProblemCharacteristicIdChanged();
+		private int _ProblemCharacteristicId;
+		[Column(Storage=@"_ProblemCharacteristicId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int ProblemCharacteristicId
+		{
+			get { return _ProblemCharacteristicId; }
+			set {
+				if (_ProblemCharacteristicId != value) {
+					if (_ProblemCharacteristic.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnProblemCharacteristicIdChanging(value);
+					SendPropertyChanging();
+					_ProblemCharacteristicId = value;
+					SendPropertyChanged("ProblemCharacteristicId");
+					OnProblemCharacteristicIdChanged();
+				}
+			}
+		}
+		
+		partial void OnProblemIdChanging(int value);
+		partial void OnProblemIdChanged();
+		private int _ProblemId;
+		[Column(Storage=@"_ProblemId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=2)]
+		public int ProblemId
+		{
+			get { return _ProblemId; }
+			set {
+				if (_ProblemId != value) {
+					if (_Problem.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnProblemIdChanging(value);
+					SendPropertyChanging();
+					_ProblemId = value;
+					SendPropertyChanged("ProblemId");
+					OnProblemIdChanged();
+				}
+			}
+		}
+		
+		partial void OnValueChanging(string value);
+		partial void OnValueChanged();
+		private string _Value;
+		[Column(Storage=@"_Value", DbType=@"VarChar(MAX) NOT NULL", CanBeNull=false)]
+		[DataMember(Order=3)]
+		public string Value
+		{
+			get { return _Value; }
+			set {
+				if (_Value != value) {
+					OnValueChanging(value);
+					SendPropertyChanging();
+					_Value = value;
+					SendPropertyChanged("Value");
+					OnValueChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntityRef<Problem> _Problem;
+		[Association(Name=@"Problem_CharProblemCharacteristicValue", Storage=@"_Problem", ThisKey=@"ProblemId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=4, EmitDefaultValue=false)]
+		public Problem Problem
+		{
+			get {
+				return _Problem.Entity;
+			}
+			set {
+				Problem previousValue = _Problem.Entity;
+				if ((previousValue != value) || (!_Problem.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Problem.Entity = null;
+						previousValue.CharProblemCharacteristicValues.Remove(this);
+					}
+					_Problem.Entity = value;
+					if (value != null) {
+						value.CharProblemCharacteristicValues.Add(this);
+						_ProblemId = value.Id;
+					}
+					else {
+						_ProblemId = default(int);
+					}
+					SendPropertyChanged("Problem");
+				}
+			}
+		}
+
+		private EntityRef<ProblemCharacteristic> _ProblemCharacteristic;
+		[Association(Name=@"ProblemCharacteristic_CharProblemCharacteristicValue", Storage=@"_ProblemCharacteristic", ThisKey=@"ProblemCharacteristicId", OtherKey=@"Id", IsForeignKey=true)]
+		[DataMember(Order=5, EmitDefaultValue=false)]
+		public ProblemCharacteristic ProblemCharacteristic
+		{
+			get {
+				return _ProblemCharacteristic.Entity;
+			}
+			set {
+				ProblemCharacteristic previousValue = _ProblemCharacteristic.Entity;
+				if ((previousValue != value) || (!_ProblemCharacteristic.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_ProblemCharacteristic.Entity = null;
+						previousValue.CharProblemCharacteristicValues.Remove(this);
+					}
+					_ProblemCharacteristic.Entity = value;
+					if (value != null) {
+						value.CharProblemCharacteristicValues.Add(this);
+						_ProblemCharacteristicId = value.Id;
+					}
+					else {
+						_ProblemCharacteristicId = default(int);
+					}
+					SendPropertyChanged("ProblemCharacteristic");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.CharResultValue")]
+[KnownType(typeof(CharResultValue))]	public partial class CharResultValue : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public CharResultValue()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Run = default(EntityRef<Run>);
+			_Result = default(EntityRef<Result>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnResultIdChanging(int value);
+		partial void OnResultIdChanged();
+		private int _ResultId;
+		[Column(Storage=@"_ResultId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int ResultId
+		{
+			get { return _ResultId; }
+			set {
+				if (_ResultId != value) {
+					if (_Result.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnResultIdChanging(value);
+					SendPropertyChanging();
+					_ResultId = value;
+					SendPropertyChanged("ResultId");
+					OnResultIdChanged();
+				}
+			}
+		}
+		
+		partial void OnRunIdChanging(int value);
+		partial void OnRunIdChanged();
+		private int _RunId;
+		[Column(Storage=@"_RunId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=2)]
+		public int RunId
+		{
+			get { return _RunId; }
+			set {
+				if (_RunId != value) {
+					if (_Run.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnRunIdChanging(value);
+					SendPropertyChanging();
+					_RunId = value;
+					SendPropertyChanged("RunId");
+					OnRunIdChanged();
+				}
+			}
+		}
+		
+		partial void OnValueChanging(string value);
+		partial void OnValueChanged();
+		private string _Value;
+		[Column(Storage=@"_Value", DbType=@"VarChar(MAX) NOT NULL", CanBeNull=false)]
+		[DataMember(Order=3)]
+		public string Value
+		{
+			get { return _Value; }
+			set {
+				if (_Value != value) {
+					OnValueChanging(value);
+					SendPropertyChanging();
+					_Value = value;
+					SendPropertyChanged("Value");
+					OnValueChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntityRef<Run> _Run;
+		[Association(Name=@"Run_CharResultValue", Storage=@"_Run", ThisKey=@"RunId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=4, EmitDefaultValue=false)]
+		public Run Run
+		{
+			get {
+				return _Run.Entity;
+			}
+			set {
+				Run previousValue = _Run.Entity;
+				if ((previousValue != value) || (!_Run.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Run.Entity = null;
+						previousValue.CharResultValues.Remove(this);
+					}
+					_Run.Entity = value;
+					if (value != null) {
+						value.CharResultValues.Add(this);
+						_RunId = value.Id;
+					}
+					else {
+						_RunId = default(int);
+					}
+					SendPropertyChanged("Run");
+				}
+			}
+		}
+
+		private EntityRef<Result> _Result;
+		[Association(Name=@"Result_CharResultValue", Storage=@"_Result", ThisKey=@"ResultId", OtherKey=@"Id", IsForeignKey=true)]
+		[DataMember(Order=5, EmitDefaultValue=false)]
+		public Result Result
+		{
+			get {
+				return _Result.Entity;
+			}
+			set {
+				Result previousValue = _Result.Entity;
+				if ((previousValue != value) || (!_Result.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Result.Entity = null;
+						previousValue.CharResultValues.Remove(this);
+					}
+					_Result.Entity = value;
+					if (value != null) {
+						value.CharResultValues.Add(this);
+						_ResultId = value.Id;
+					}
+					else {
+						_ResultId = default(int);
+					}
+					SendPropertyChanged("Result");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.Client")]
+[KnownType(typeof(Client))]	public partial class Client : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public Client()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Runs = new EntitySet<Run>(attach_Runs, detach_Runs);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnIdChanging(Guid value);
+		partial void OnIdChanged();
+		private Guid _Id;
+		[Column(Storage=@"_Id", DbType=@"UniqueIdentifier NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public Guid Id
+		{
+			get { return _Id; }
+			set {
+				if (_Id != value) {
+					OnIdChanging(value);
+					SendPropertyChanging();
+					_Id = value;
+					SendPropertyChanged("Id");
+					OnIdChanged();
+				}
+			}
+		}
+		
+		partial void OnNameChanging(string value);
+		partial void OnNameChanged();
+		private string _Name;
+		[Column(Storage=@"_Name", DbType=@"VarChar(200) NOT NULL", CanBeNull=false)]
+		[DataMember(Order=2)]
+		public string Name
+		{
+			get { return _Name; }
+			set {
+				if (_Name != value) {
+					OnNameChanging(value);
+					SendPropertyChanging();
+					_Name = value;
+					SendPropertyChanged("Name");
+					OnNameChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntitySet<Run> _Runs;
+		[Association(Name=@"Client_Run", Storage=@"_Runs", ThisKey=@"Id", OtherKey=@"ClientId")]
+		[DataMember(Order=3, EmitDefaultValue=false)]
+		public EntitySet<Run> Runs
+		{
+			get {
+				if (serializing && !_Runs.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _Runs;
+			}
+			set {
+				_Runs.Assign(value);
+			}
+		}
+
+		private void attach_Runs(Run entity)
+		{
+			SendPropertyChanging();
+			entity.Client = this;
+		}
+		
+		private void detach_Runs(Run entity)
+		{
+			SendPropertyChanging();
+			entity.Client = null;
+		}
+		#endregion
+		
+		#region Serialization
+		private bool serializing;
+		
+		[OnSerializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerializing(StreamingContext context)
+		{
+			serializing = true;
+		}
+		
+		[OnSerialized()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerialized(StreamingContext context)
+		{
+			serializing = false;
+		}
+		
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.DataType")]
+[KnownType(typeof(DataType))]	public partial class DataType : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public DataType()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_ProblemCharacteristics = new EntitySet<ProblemCharacteristic>(attach_ProblemCharacteristics, detach_ProblemCharacteristics);
+			_Results = new EntitySet<Result>(attach_Results, detach_Results);
+			_OperatorParameterValues = new EntitySet<OperatorParameterValue>(attach_OperatorParameterValues, detach_OperatorParameterValues);
+			_Parameters = new EntitySet<Parameter>(attach_Parameters, detach_Parameters);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnIdChanging(int value);
+		partial void OnIdChanged();
+		private int _Id;
+		[Column(Storage=@"_Id", AutoSync=AutoSync.OnInsert, DbType=@"Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int Id
+		{
+			get { return _Id; }
+			set {
+				if (_Id != value) {
+					OnIdChanging(value);
+					SendPropertyChanging();
+					_Id = value;
+					SendPropertyChanged("Id");
+					OnIdChanged();
+				}
+			}
+		}
+		
+		partial void OnSqlNameChanging(string value);
+		partial void OnSqlNameChanged();
+		private string _SqlName;
+		[Column(Storage=@"_SqlName", DbType=@"VarChar(200) NOT NULL", CanBeNull=false)]
+		[DataMember(Order=2)]
+		public string SqlName
+		{
+			get { return _SqlName; }
+			set {
+				if (_SqlName != value) {
+					OnSqlNameChanging(value);
+					SendPropertyChanging();
+					_SqlName = value;
+					SendPropertyChanged("SqlName");
+					OnSqlNameChanged();
+				}
+			}
+		}
+		
+		partial void OnClrNameChanging(string value);
+		partial void OnClrNameChanged();
+		private string _ClrName;
+		[Column(Storage=@"_ClrName", DbType=@"VarChar(MAX) NOT NULL", CanBeNull=false)]
+		[DataMember(Order=3)]
+		public string ClrName
+		{
+			get { return _ClrName; }
+			set {
+				if (_ClrName != value) {
+					OnClrNameChanging(value);
+					SendPropertyChanging();
+					_ClrName = value;
+					SendPropertyChanged("ClrName");
+					OnClrNameChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntitySet<ProblemCharacteristic> _ProblemCharacteristics;
+		[Association(Name=@"DataType_ProblemCharacteristic", Storage=@"_ProblemCharacteristics", ThisKey=@"Id", OtherKey=@"DataTypeId")]
+		[DataMember(Order=4, EmitDefaultValue=false)]
+		public EntitySet<ProblemCharacteristic> ProblemCharacteristics
+		{
+			get {
+				if (serializing && !_ProblemCharacteristics.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _ProblemCharacteristics;
+			}
+			set {
+				_ProblemCharacteristics.Assign(value);
+			}
+		}
+
+		private void attach_ProblemCharacteristics(ProblemCharacteristic entity)
+		{
+			SendPropertyChanging();
+			entity.DataType = this;
+		}
+		
+		private void detach_ProblemCharacteristics(ProblemCharacteristic entity)
+		{
+			SendPropertyChanging();
+			entity.DataType = null;
+		}
+		private EntitySet<Result> _Results;
+		[Association(Name=@"DataType_Result", Storage=@"_Results", ThisKey=@"Id", OtherKey=@"DataTypeId")]
+		[DataMember(Order=5, EmitDefaultValue=false)]
+		public EntitySet<Result> Results
+		{
+			get {
+				if (serializing && !_Results.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _Results;
+			}
+			set {
+				_Results.Assign(value);
+			}
+		}
+
+		private void attach_Results(Result entity)
+		{
+			SendPropertyChanging();
+			entity.DataType = this;
+		}
+		
+		private void detach_Results(Result entity)
+		{
+			SendPropertyChanging();
+			entity.DataType = null;
+		}
+		private EntitySet<OperatorParameterValue> _OperatorParameterValues;
+		[Association(Name=@"DataType_OperatorParameterValue", Storage=@"_OperatorParameterValues", ThisKey=@"Id", OtherKey=@"DataTypeId")]
+		[DataMember(Order=6, EmitDefaultValue=false)]
+		public EntitySet<OperatorParameterValue> OperatorParameterValues
+		{
+			get {
+				if (serializing && !_OperatorParameterValues.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _OperatorParameterValues;
+			}
+			set {
+				_OperatorParameterValues.Assign(value);
+			}
+		}
+
+		private void attach_OperatorParameterValues(OperatorParameterValue entity)
+		{
+			SendPropertyChanging();
+			entity.DataType = this;
+		}
+		
+		private void detach_OperatorParameterValues(OperatorParameterValue entity)
+		{
+			SendPropertyChanging();
+			entity.DataType = null;
+		}
+		private EntitySet<Parameter> _Parameters;
+		[Association(Name=@"DataType_Parameter", Storage=@"_Parameters", ThisKey=@"Id", OtherKey=@"DataTypeId")]
+		[DataMember(Order=7, EmitDefaultValue=false)]
+		public EntitySet<Parameter> Parameters
+		{
+			get {
+				if (serializing && !_Parameters.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _Parameters;
+			}
+			set {
+				_Parameters.Assign(value);
+			}
+		}
+
+		private void attach_Parameters(Parameter entity)
+		{
+			SendPropertyChanging();
+			entity.DataType = this;
+		}
+		
+		private void detach_Parameters(Parameter entity)
+		{
+			SendPropertyChanging();
+			entity.DataType = null;
+		}
+		#endregion
+		
+		#region Serialization
+		private bool serializing;
+		
+		[OnSerializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerializing(StreamingContext context)
+		{
+			serializing = true;
+		}
+		
+		[OnSerialized()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerialized(StreamingContext context)
+		{
+			serializing = false;
+		}
+		
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.Experiment")]
+[KnownType(typeof(Experiment))]	public partial class Experiment : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public Experiment()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_CharParameterValues = new EntitySet<CharParameterValue>(attach_CharParameterValues, detach_CharParameterValues);
+			_ExperimentCreators = new EntitySet<ExperimentCreator>(attach_ExperimentCreators, detach_ExperimentCreators);
+			_FloatParameterValues = new EntitySet<FloatParameterValue>(attach_FloatParameterValues, detach_FloatParameterValues);
+			_IntParameterValues = new EntitySet<IntParameterValue>(attach_IntParameterValues, detach_IntParameterValues);
+			_Runs = new EntitySet<Run>(attach_Runs, detach_Runs);
+			_OperatorParameterValues = new EntitySet<OperatorParameterValue>(attach_OperatorParameterValues, detach_OperatorParameterValues);
+			_Problem = default(EntityRef<Problem>);
+			_Project = default(EntityRef<Project>);
+			_Algorithm = default(EntityRef<Algorithm>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnIdChanging(int value);
+		partial void OnIdChanged();
+		private int _Id;
+		[Column(Storage=@"_Id", AutoSync=AutoSync.OnInsert, DbType=@"Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int Id
+		{
+			get { return _Id; }
+			set {
+				if (_Id != value) {
+					OnIdChanging(value);
+					SendPropertyChanging();
+					_Id = value;
+					SendPropertyChanged("Id");
+					OnIdChanged();
+				}
+			}
+		}
+		
+		partial void OnProjectIdChanging(int value);
+		partial void OnProjectIdChanged();
+		private int _ProjectId;
+		[Column(Storage=@"_ProjectId", DbType=@"Int NOT NULL", CanBeNull=false)]
+		[DataMember(Order=2)]
+		public int ProjectId
+		{
+			get { return _ProjectId; }
+			set {
+				if (_ProjectId != value) {
+					if (_Project.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnProjectIdChanging(value);
+					SendPropertyChanging();
+					_ProjectId = value;
+					SendPropertyChanged("ProjectId");
+					OnProjectIdChanged();
+				}
+			}
+		}
+		
+		partial void OnAlgorithmIdChanging(int value);
+		partial void OnAlgorithmIdChanged();
+		private int _AlgorithmId;
+		[Column(Storage=@"_AlgorithmId", DbType=@"Int NOT NULL", CanBeNull=false)]
+		[DataMember(Order=3)]
+		public int AlgorithmId
+		{
+			get { return _AlgorithmId; }
+			set {
+				if (_AlgorithmId != value) {
+					if (_Algorithm.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnAlgorithmIdChanging(value);
+					SendPropertyChanging();
+					_AlgorithmId = value;
+					SendPropertyChanged("AlgorithmId");
+					OnAlgorithmIdChanged();
+				}
+			}
+		}
+		
+		partial void OnProblemIdChanging(int value);
+		partial void OnProblemIdChanged();
+		private int _ProblemId;
+		[Column(Storage=@"_ProblemId", DbType=@"Int NOT NULL", CanBeNull=false)]
+		[DataMember(Order=4)]
+		public int ProblemId
+		{
+			get { return _ProblemId; }
+			set {
+				if (_ProblemId != value) {
+					if (_Problem.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnProblemIdChanging(value);
+					SendPropertyChanging();
+					_ProblemId = value;
+					SendPropertyChanged("ProblemId");
+					OnProblemIdChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntitySet<CharParameterValue> _CharParameterValues;
+		[Association(Name=@"Experiment_CharParameterValue", Storage=@"_CharParameterValues", ThisKey=@"Id", OtherKey=@"ExperimentId")]
+		[DataMember(Order=5, EmitDefaultValue=false)]
+		public EntitySet<CharParameterValue> CharParameterValues
+		{
+			get {
+				if (serializing && !_CharParameterValues.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _CharParameterValues;
+			}
+			set {
+				_CharParameterValues.Assign(value);
+			}
+		}
+
+		private void attach_CharParameterValues(CharParameterValue entity)
+		{
+			SendPropertyChanging();
+			entity.Experiment = this;
+		}
+		
+		private void detach_CharParameterValues(CharParameterValue entity)
+		{
+			SendPropertyChanging();
+			entity.Experiment = null;
+		}
+		private EntitySet<ExperimentCreator> _ExperimentCreators;
+		[Association(Name=@"Experiment_ExperimentCreator", Storage=@"_ExperimentCreators", ThisKey=@"Id", OtherKey=@"ExperimentId")]
+		[DataMember(Order=6, EmitDefaultValue=false)]
+		public EntitySet<ExperimentCreator> ExperimentCreators
+		{
+			get {
+				if (serializing && !_ExperimentCreators.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _ExperimentCreators;
+			}
+			set {
+				_ExperimentCreators.Assign(value);
+			}
+		}
+
+		private void attach_ExperimentCreators(ExperimentCreator entity)
+		{
+			SendPropertyChanging();
+			entity.Experiment = this;
+		}
+		
+		private void detach_ExperimentCreators(ExperimentCreator entity)
+		{
+			SendPropertyChanging();
+			entity.Experiment = null;
+		}
+		private EntitySet<FloatParameterValue> _FloatParameterValues;
+		[Association(Name=@"Experiment_FloatParameterValue", Storage=@"_FloatParameterValues", ThisKey=@"Id", OtherKey=@"ExperimentId")]
+		[DataMember(Order=7, EmitDefaultValue=false)]
+		public EntitySet<FloatParameterValue> FloatParameterValues
+		{
+			get {
+				if (serializing && !_FloatParameterValues.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _FloatParameterValues;
+			}
+			set {
+				_FloatParameterValues.Assign(value);
+			}
+		}
+
+		private void attach_FloatParameterValues(FloatParameterValue entity)
+		{
+			SendPropertyChanging();
+			entity.Experiment = this;
+		}
+		
+		private void detach_FloatParameterValues(FloatParameterValue entity)
+		{
+			SendPropertyChanging();
+			entity.Experiment = null;
+		}
+		private EntitySet<IntParameterValue> _IntParameterValues;
+		[Association(Name=@"Experiment_IntParameterValue", Storage=@"_IntParameterValues", ThisKey=@"Id", OtherKey=@"ExperimentId")]
+		[DataMember(Order=8, EmitDefaultValue=false)]
+		public EntitySet<IntParameterValue> IntParameterValues
+		{
+			get {
+				if (serializing && !_IntParameterValues.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _IntParameterValues;
+			}
+			set {
+				_IntParameterValues.Assign(value);
+			}
+		}
+
+		private void attach_IntParameterValues(IntParameterValue entity)
+		{
+			SendPropertyChanging();
+			entity.Experiment = this;
+		}
+		
+		private void detach_IntParameterValues(IntParameterValue entity)
+		{
+			SendPropertyChanging();
+			entity.Experiment = null;
+		}
+		private EntitySet<Run> _Runs;
+		[Association(Name=@"Experiment_Run", Storage=@"_Runs", ThisKey=@"Id", OtherKey=@"ExperimentId")]
+		[DataMember(Order=9, EmitDefaultValue=false)]
+		public EntitySet<Run> Runs
+		{
+			get {
+				if (serializing && !_Runs.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _Runs;
+			}
+			set {
+				_Runs.Assign(value);
+			}
+		}
+
+		private void attach_Runs(Run entity)
+		{
+			SendPropertyChanging();
+			entity.Experiment = this;
+		}
+		
+		private void detach_Runs(Run entity)
+		{
+			SendPropertyChanging();
+			entity.Experiment = null;
+		}
+		private EntitySet<OperatorParameterValue> _OperatorParameterValues;
+		[Association(Name=@"Experiment_OperatorParameterValue", Storage=@"_OperatorParameterValues", ThisKey=@"Id", OtherKey=@"ExperimentId")]
+		[DataMember(Order=10, EmitDefaultValue=false)]
+		public EntitySet<OperatorParameterValue> OperatorParameterValues
+		{
+			get {
+				if (serializing && !_OperatorParameterValues.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _OperatorParameterValues;
+			}
+			set {
+				_OperatorParameterValues.Assign(value);
+			}
+		}
+
+		private void attach_OperatorParameterValues(OperatorParameterValue entity)
+		{
+			SendPropertyChanging();
+			entity.Experiment = this;
+		}
+		
+		private void detach_OperatorParameterValues(OperatorParameterValue entity)
+		{
+			SendPropertyChanging();
+			entity.Experiment = null;
+		}
+		private EntityRef<Problem> _Problem;
+		[Association(Name=@"Problem_Experiment", Storage=@"_Problem", ThisKey=@"ProblemId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=11, EmitDefaultValue=false)]
+		public Problem Problem
+		{
+			get {
+				if (serializing && !_Problem.HasLoadedOrAssignedValue) {
+					return null;
+				}
+				return _Problem.Entity;
+			}
+			set {
+				Problem previousValue = _Problem.Entity;
+				if ((previousValue != value) || (!_Problem.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Problem.Entity = null;
+						previousValue.Experiments.Remove(this);
+					}
+					_Problem.Entity = value;
+					if (value != null) {
+						value.Experiments.Add(this);
+						_ProblemId = value.Id;
+					}
+					else {
+						_ProblemId = default(int);
+					}
+					SendPropertyChanged("Problem");
+				}
+			}
+		}
+
+		private EntityRef<Project> _Project;
+		[Association(Name=@"Project_Experiment", Storage=@"_Project", ThisKey=@"ProjectId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=12, EmitDefaultValue=false)]
+		public Project Project
+		{
+			get {
+				if (serializing && !_Project.HasLoadedOrAssignedValue) {
+					return null;
+				}
+				return _Project.Entity;
+			}
+			set {
+				Project previousValue = _Project.Entity;
+				if ((previousValue != value) || (!_Project.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Project.Entity = null;
+						previousValue.Experiments.Remove(this);
+					}
+					_Project.Entity = value;
+					if (value != null) {
+						value.Experiments.Add(this);
+						_ProjectId = value.Id;
+					}
+					else {
+						_ProjectId = default(int);
+					}
+					SendPropertyChanged("Project");
+				}
+			}
+		}
+
+		private EntityRef<Algorithm> _Algorithm;
+		[Association(Name=@"Algorithm_Experiment", Storage=@"_Algorithm", ThisKey=@"AlgorithmId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=13, EmitDefaultValue=false)]
+		public Algorithm Algorithm
+		{
+			get {
+				if (serializing && !_Algorithm.HasLoadedOrAssignedValue) {
+					return null;
+				}
+				return _Algorithm.Entity;
+			}
+			set {
+				Algorithm previousValue = _Algorithm.Entity;
+				if ((previousValue != value) || (!_Algorithm.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Algorithm.Entity = null;
+						previousValue.Experiments.Remove(this);
+					}
+					_Algorithm.Entity = value;
+					if (value != null) {
+						value.Experiments.Add(this);
+						_AlgorithmId = value.Id;
+					}
+					else {
+						_AlgorithmId = default(int);
+					}
+					SendPropertyChanged("Algorithm");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		private bool serializing;
+		
+		[OnSerializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerializing(StreamingContext context)
+		{
+			serializing = true;
+		}
+		
+		[OnSerialized()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerialized(StreamingContext context)
+		{
+			serializing = false;
+		}
+		
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.ExperimentCreator")]
+[KnownType(typeof(ExperimentCreator))]	public partial class ExperimentCreator : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public ExperimentCreator()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Experiment = default(EntityRef<Experiment>);
+			_User = default(EntityRef<User>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnExperimentIdChanging(int value);
+		partial void OnExperimentIdChanged();
+		private int _ExperimentId;
+		[Column(Storage=@"_ExperimentId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int ExperimentId
+		{
+			get { return _ExperimentId; }
+			set {
+				if (_ExperimentId != value) {
+					if (_Experiment.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnExperimentIdChanging(value);
+					SendPropertyChanging();
+					_ExperimentId = value;
+					SendPropertyChanged("ExperimentId");
+					OnExperimentIdChanged();
+				}
+			}
+		}
+		
+		partial void OnUserIdChanging(Guid value);
+		partial void OnUserIdChanged();
+		private Guid _UserId;
+		[Column(Storage=@"_UserId", DbType=@"UniqueIdentifier NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=2)]
+		public Guid UserId
+		{
+			get { return _UserId; }
+			set {
+				if (_UserId != value) {
+					if (_User.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnUserIdChanging(value);
+					SendPropertyChanging();
+					_UserId = value;
+					SendPropertyChanged("UserId");
+					OnUserIdChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntityRef<Experiment> _Experiment;
+		[Association(Name=@"Experiment_ExperimentCreator", Storage=@"_Experiment", ThisKey=@"ExperimentId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=3, EmitDefaultValue=false)]
+		public Experiment Experiment
+		{
+			get {
+				return _Experiment.Entity;
+			}
+			set {
+				Experiment previousValue = _Experiment.Entity;
+				if ((previousValue != value) || (!_Experiment.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Experiment.Entity = null;
+						previousValue.ExperimentCreators.Remove(this);
+					}
+					_Experiment.Entity = value;
+					if (value != null) {
+						value.ExperimentCreators.Add(this);
+						_ExperimentId = value.Id;
+					}
+					else {
+						_ExperimentId = default(int);
+					}
+					SendPropertyChanged("Experiment");
+				}
+			}
+		}
+
+		private EntityRef<User> _User;
+		[Association(Name=@"User_ExperimentCreator", Storage=@"_User", ThisKey=@"UserId", OtherKey=@"Id", IsForeignKey=true)]
+		[DataMember(Order=4, EmitDefaultValue=false)]
+		public User User
+		{
+			get {
+				return _User.Entity;
+			}
+			set {
+				User previousValue = _User.Entity;
+				if ((previousValue != value) || (!_User.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_User.Entity = null;
+						previousValue.ExperimentCreators.Remove(this);
+					}
+					_User.Entity = value;
+					if (value != null) {
+						value.ExperimentCreators.Add(this);
+						_UserId = value.Id;
+					}
+					else {
+						_UserId = default(Guid);
+					}
+					SendPropertyChanged("User");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.FloatParameterValue")]
+[KnownType(typeof(FloatParameterValue))]	public partial class FloatParameterValue : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public FloatParameterValue()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Experiment = default(EntityRef<Experiment>);
+			_Parameter = default(EntityRef<Parameter>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnParameterIdChanging(int value);
+		partial void OnParameterIdChanged();
+		private int _ParameterId;
+		[Column(Storage=@"_ParameterId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int ParameterId
+		{
+			get { return _ParameterId; }
+			set {
+				if (_ParameterId != value) {
+					if (_Parameter.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnParameterIdChanging(value);
+					SendPropertyChanging();
+					_ParameterId = value;
+					SendPropertyChanged("ParameterId");
+					OnParameterIdChanged();
+				}
+			}
+		}
+		
+		partial void OnExperimentIdChanging(int value);
+		partial void OnExperimentIdChanged();
+		private int _ExperimentId;
+		[Column(Storage=@"_ExperimentId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=2)]
+		public int ExperimentId
+		{
+			get { return _ExperimentId; }
+			set {
+				if (_ExperimentId != value) {
+					if (_Experiment.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnExperimentIdChanging(value);
+					SendPropertyChanging();
+					_ExperimentId = value;
+					SendPropertyChanged("ExperimentId");
+					OnExperimentIdChanged();
+				}
+			}
+		}
+		
+		partial void OnValueChanging(double value);
+		partial void OnValueChanged();
+		private double _Value;
+		[Column(Storage=@"_Value", DbType=@"Float NOT NULL", CanBeNull=false)]
+		[DataMember(Order=3)]
+		public double Value
+		{
+			get { return _Value; }
+			set {
+				if (_Value != value) {
+					OnValueChanging(value);
+					SendPropertyChanging();
+					_Value = value;
+					SendPropertyChanged("Value");
+					OnValueChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntityRef<Experiment> _Experiment;
+		[Association(Name=@"Experiment_FloatParameterValue", Storage=@"_Experiment", ThisKey=@"ExperimentId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=4, EmitDefaultValue=false)]
+		public Experiment Experiment
+		{
+			get {
+				return _Experiment.Entity;
+			}
+			set {
+				Experiment previousValue = _Experiment.Entity;
+				if ((previousValue != value) || (!_Experiment.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Experiment.Entity = null;
+						previousValue.FloatParameterValues.Remove(this);
+					}
+					_Experiment.Entity = value;
+					if (value != null) {
+						value.FloatParameterValues.Add(this);
+						_ExperimentId = value.Id;
+					}
+					else {
+						_ExperimentId = default(int);
+					}
+					SendPropertyChanged("Experiment");
+				}
+			}
+		}
+
+		private EntityRef<Parameter> _Parameter;
+		[Association(Name=@"Parameter_FloatParameterValue", Storage=@"_Parameter", ThisKey=@"ParameterId", OtherKey=@"Id", IsForeignKey=true)]
+		[DataMember(Order=5, EmitDefaultValue=false)]
+		public Parameter Parameter
+		{
+			get {
+				return _Parameter.Entity;
+			}
+			set {
+				Parameter previousValue = _Parameter.Entity;
+				if ((previousValue != value) || (!_Parameter.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Parameter.Entity = null;
+						previousValue.FloatParameterValues.Remove(this);
+					}
+					_Parameter.Entity = value;
+					if (value != null) {
+						value.FloatParameterValues.Add(this);
+						_ParameterId = value.Id;
+					}
+					else {
+						_ParameterId = default(int);
+					}
+					SendPropertyChanged("Parameter");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.FloatProblemCharacteristicValue")]
+[KnownType(typeof(FloatProblemCharacteristicValue))]	public partial class FloatProblemCharacteristicValue : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public FloatProblemCharacteristicValue()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Problem = default(EntityRef<Problem>);
+			_ProblemCharacteristic = default(EntityRef<ProblemCharacteristic>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnProblemCharacteristicIdChanging(int value);
+		partial void OnProblemCharacteristicIdChanged();
+		private int _ProblemCharacteristicId;
+		[Column(Storage=@"_ProblemCharacteristicId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int ProblemCharacteristicId
+		{
+			get { return _ProblemCharacteristicId; }
+			set {
+				if (_ProblemCharacteristicId != value) {
+					if (_ProblemCharacteristic.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnProblemCharacteristicIdChanging(value);
+					SendPropertyChanging();
+					_ProblemCharacteristicId = value;
+					SendPropertyChanged("ProblemCharacteristicId");
+					OnProblemCharacteristicIdChanged();
+				}
+			}
+		}
+		
+		partial void OnProblemIdChanging(int value);
+		partial void OnProblemIdChanged();
+		private int _ProblemId;
+		[Column(Storage=@"_ProblemId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=2)]
+		public int ProblemId
+		{
+			get { return _ProblemId; }
+			set {
+				if (_ProblemId != value) {
+					if (_Problem.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnProblemIdChanging(value);
+					SendPropertyChanging();
+					_ProblemId = value;
+					SendPropertyChanged("ProblemId");
+					OnProblemIdChanged();
+				}
+			}
+		}
+		
+		partial void OnValueChanging(double value);
+		partial void OnValueChanged();
+		private double _Value;
+		[Column(Storage=@"_Value", DbType=@"Float NOT NULL", CanBeNull=false)]
+		[DataMember(Order=3)]
+		public double Value
+		{
+			get { return _Value; }
+			set {
+				if (_Value != value) {
+					OnValueChanging(value);
+					SendPropertyChanging();
+					_Value = value;
+					SendPropertyChanged("Value");
+					OnValueChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntityRef<Problem> _Problem;
+		[Association(Name=@"Problem_FloatProblemCharacteristicValue", Storage=@"_Problem", ThisKey=@"ProblemId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=4, EmitDefaultValue=false)]
+		public Problem Problem
+		{
+			get {
+				return _Problem.Entity;
+			}
+			set {
+				Problem previousValue = _Problem.Entity;
+				if ((previousValue != value) || (!_Problem.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Problem.Entity = null;
+						previousValue.FloatProblemCharacteristicValues.Remove(this);
+					}
+					_Problem.Entity = value;
+					if (value != null) {
+						value.FloatProblemCharacteristicValues.Add(this);
+						_ProblemId = value.Id;
+					}
+					else {
+						_ProblemId = default(int);
+					}
+					SendPropertyChanged("Problem");
+				}
+			}
+		}
+
+		private EntityRef<ProblemCharacteristic> _ProblemCharacteristic;
+		[Association(Name=@"ProblemCharacteristic_FloatProblemCharacteristicValue", Storage=@"_ProblemCharacteristic", ThisKey=@"ProblemCharacteristicId", OtherKey=@"Id", IsForeignKey=true)]
+		[DataMember(Order=5, EmitDefaultValue=false)]
+		public ProblemCharacteristic ProblemCharacteristic
+		{
+			get {
+				return _ProblemCharacteristic.Entity;
+			}
+			set {
+				ProblemCharacteristic previousValue = _ProblemCharacteristic.Entity;
+				if ((previousValue != value) || (!_ProblemCharacteristic.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_ProblemCharacteristic.Entity = null;
+						previousValue.FloatProblemCharacteristicValues.Remove(this);
+					}
+					_ProblemCharacteristic.Entity = value;
+					if (value != null) {
+						value.FloatProblemCharacteristicValues.Add(this);
+						_ProblemCharacteristicId = value.Id;
+					}
+					else {
+						_ProblemCharacteristicId = default(int);
+					}
+					SendPropertyChanged("ProblemCharacteristic");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.FloatResultValue")]
+[KnownType(typeof(FloatResultValue))]	public partial class FloatResultValue : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public FloatResultValue()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Run = default(EntityRef<Run>);
+			_Result = default(EntityRef<Result>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnResultIdChanging(int value);
+		partial void OnResultIdChanged();
+		private int _ResultId;
+		[Column(Storage=@"_ResultId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int ResultId
+		{
+			get { return _ResultId; }
+			set {
+				if (_ResultId != value) {
+					if (_Result.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnResultIdChanging(value);
+					SendPropertyChanging();
+					_ResultId = value;
+					SendPropertyChanged("ResultId");
+					OnResultIdChanged();
+				}
+			}
+		}
+		
+		partial void OnRunIdChanging(int value);
+		partial void OnRunIdChanged();
+		private int _RunId;
+		[Column(Storage=@"_RunId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=2)]
+		public int RunId
+		{
+			get { return _RunId; }
+			set {
+				if (_RunId != value) {
+					if (_Run.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnRunIdChanging(value);
+					SendPropertyChanging();
+					_RunId = value;
+					SendPropertyChanged("RunId");
+					OnRunIdChanged();
+				}
+			}
+		}
+		
+		partial void OnValueChanging(double value);
+		partial void OnValueChanged();
+		private double _Value;
+		[Column(Storage=@"_Value", DbType=@"Float NOT NULL", CanBeNull=false)]
+		[DataMember(Order=3)]
+		public double Value
+		{
+			get { return _Value; }
+			set {
+				if (_Value != value) {
+					OnValueChanging(value);
+					SendPropertyChanging();
+					_Value = value;
+					SendPropertyChanged("Value");
+					OnValueChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntityRef<Run> _Run;
+		[Association(Name=@"Run_FloatResultValue", Storage=@"_Run", ThisKey=@"RunId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=4, EmitDefaultValue=false)]
+		public Run Run
+		{
+			get {
+				return _Run.Entity;
+			}
+			set {
+				Run previousValue = _Run.Entity;
+				if ((previousValue != value) || (!_Run.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Run.Entity = null;
+						previousValue.FloatResultValues.Remove(this);
+					}
+					_Run.Entity = value;
+					if (value != null) {
+						value.FloatResultValues.Add(this);
+						_RunId = value.Id;
+					}
+					else {
+						_RunId = default(int);
+					}
+					SendPropertyChanged("Run");
+				}
+			}
+		}
+
+		private EntityRef<Result> _Result;
+		[Association(Name=@"Result_FloatResultValue", Storage=@"_Result", ThisKey=@"ResultId", OtherKey=@"Id", IsForeignKey=true)]
+		[DataMember(Order=5, EmitDefaultValue=false)]
+		public Result Result
+		{
+			get {
+				return _Result.Entity;
+			}
+			set {
+				Result previousValue = _Result.Entity;
+				if ((previousValue != value) || (!_Result.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Result.Entity = null;
+						previousValue.FloatResultValues.Remove(this);
+					}
+					_Result.Entity = value;
+					if (value != null) {
+						value.FloatResultValues.Add(this);
+						_ResultId = value.Id;
+					}
+					else {
+						_ResultId = default(int);
+					}
+					SendPropertyChanged("Result");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.IntParameterValue")]
+[KnownType(typeof(IntParameterValue))]	public partial class IntParameterValue : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public IntParameterValue()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Experiment = default(EntityRef<Experiment>);
+			_Parameter = default(EntityRef<Parameter>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnParameterIdChanging(int value);
+		partial void OnParameterIdChanged();
+		private int _ParameterId;
+		[Column(Storage=@"_ParameterId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int ParameterId
+		{
+			get { return _ParameterId; }
+			set {
+				if (_ParameterId != value) {
+					if (_Parameter.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnParameterIdChanging(value);
+					SendPropertyChanging();
+					_ParameterId = value;
+					SendPropertyChanged("ParameterId");
+					OnParameterIdChanged();
+				}
+			}
+		}
+		
+		partial void OnExperimentIdChanging(int value);
+		partial void OnExperimentIdChanged();
+		private int _ExperimentId;
+		[Column(Storage=@"_ExperimentId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=2)]
+		public int ExperimentId
+		{
+			get { return _ExperimentId; }
+			set {
+				if (_ExperimentId != value) {
+					if (_Experiment.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnExperimentIdChanging(value);
+					SendPropertyChanging();
+					_ExperimentId = value;
+					SendPropertyChanged("ExperimentId");
+					OnExperimentIdChanged();
+				}
+			}
+		}
+		
+		partial void OnValueChanging(int value);
+		partial void OnValueChanged();
+		private int _Value;
+		[Column(Storage=@"_Value", DbType=@"Int NOT NULL", CanBeNull=false)]
+		[DataMember(Order=3)]
+		public int Value
+		{
+			get { return _Value; }
+			set {
+				if (_Value != value) {
+					OnValueChanging(value);
+					SendPropertyChanging();
+					_Value = value;
+					SendPropertyChanged("Value");
+					OnValueChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntityRef<Experiment> _Experiment;
+		[Association(Name=@"Experiment_IntParameterValue", Storage=@"_Experiment", ThisKey=@"ExperimentId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=4, EmitDefaultValue=false)]
+		public Experiment Experiment
+		{
+			get {
+				return _Experiment.Entity;
+			}
+			set {
+				Experiment previousValue = _Experiment.Entity;
+				if ((previousValue != value) || (!_Experiment.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Experiment.Entity = null;
+						previousValue.IntParameterValues.Remove(this);
+					}
+					_Experiment.Entity = value;
+					if (value != null) {
+						value.IntParameterValues.Add(this);
+						_ExperimentId = value.Id;
+					}
+					else {
+						_ExperimentId = default(int);
+					}
+					SendPropertyChanged("Experiment");
+				}
+			}
+		}
+
+		private EntityRef<Parameter> _Parameter;
+		[Association(Name=@"Parameter_IntParameterValue", Storage=@"_Parameter", ThisKey=@"ParameterId", OtherKey=@"Id", IsForeignKey=true)]
+		[DataMember(Order=5, EmitDefaultValue=false)]
+		public Parameter Parameter
+		{
+			get {
+				return _Parameter.Entity;
+			}
+			set {
+				Parameter previousValue = _Parameter.Entity;
+				if ((previousValue != value) || (!_Parameter.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Parameter.Entity = null;
+						previousValue.IntParameterValues.Remove(this);
+					}
+					_Parameter.Entity = value;
+					if (value != null) {
+						value.IntParameterValues.Add(this);
+						_ParameterId = value.Id;
+					}
+					else {
+						_ParameterId = default(int);
+					}
+					SendPropertyChanged("Parameter");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.IntProblemCharacteristicValue")]
+[KnownType(typeof(IntProblemCharacteristicValue))]	public partial class IntProblemCharacteristicValue : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public IntProblemCharacteristicValue()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Problem = default(EntityRef<Problem>);
+			_ProblemCharacteristic = default(EntityRef<ProblemCharacteristic>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnProblemCharacteristicIdChanging(int value);
+		partial void OnProblemCharacteristicIdChanged();
+		private int _ProblemCharacteristicId;
+		[Column(Storage=@"_ProblemCharacteristicId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int ProblemCharacteristicId
+		{
+			get { return _ProblemCharacteristicId; }
+			set {
+				if (_ProblemCharacteristicId != value) {
+					if (_ProblemCharacteristic.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnProblemCharacteristicIdChanging(value);
+					SendPropertyChanging();
+					_ProblemCharacteristicId = value;
+					SendPropertyChanged("ProblemCharacteristicId");
+					OnProblemCharacteristicIdChanged();
+				}
+			}
+		}
+		
+		partial void OnProblemIdChanging(int value);
+		partial void OnProblemIdChanged();
+		private int _ProblemId;
+		[Column(Storage=@"_ProblemId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=2)]
+		public int ProblemId
+		{
+			get { return _ProblemId; }
+			set {
+				if (_ProblemId != value) {
+					if (_Problem.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnProblemIdChanging(value);
+					SendPropertyChanging();
+					_ProblemId = value;
+					SendPropertyChanged("ProblemId");
+					OnProblemIdChanged();
+				}
+			}
+		}
+		
+		partial void OnValueChanging(int value);
+		partial void OnValueChanged();
+		private int _Value;
+		[Column(Storage=@"_Value", DbType=@"Int NOT NULL", CanBeNull=false)]
+		[DataMember(Order=3)]
+		public int Value
+		{
+			get { return _Value; }
+			set {
+				if (_Value != value) {
+					OnValueChanging(value);
+					SendPropertyChanging();
+					_Value = value;
+					SendPropertyChanged("Value");
+					OnValueChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntityRef<Problem> _Problem;
+		[Association(Name=@"Problem_IntProblemCharacteristicValue", Storage=@"_Problem", ThisKey=@"ProblemId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=4, EmitDefaultValue=false)]
+		public Problem Problem
+		{
+			get {
+				return _Problem.Entity;
+			}
+			set {
+				Problem previousValue = _Problem.Entity;
+				if ((previousValue != value) || (!_Problem.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Problem.Entity = null;
+						previousValue.IntProblemCharacteristicValues.Remove(this);
+					}
+					_Problem.Entity = value;
+					if (value != null) {
+						value.IntProblemCharacteristicValues.Add(this);
+						_ProblemId = value.Id;
+					}
+					else {
+						_ProblemId = default(int);
+					}
+					SendPropertyChanged("Problem");
+				}
+			}
+		}
+
+		private EntityRef<ProblemCharacteristic> _ProblemCharacteristic;
+		[Association(Name=@"ProblemCharacteristic_IntProblemCharacteristicValue", Storage=@"_ProblemCharacteristic", ThisKey=@"ProblemCharacteristicId", OtherKey=@"Id", IsForeignKey=true)]
+		[DataMember(Order=5, EmitDefaultValue=false)]
+		public ProblemCharacteristic ProblemCharacteristic
+		{
+			get {
+				return _ProblemCharacteristic.Entity;
+			}
+			set {
+				ProblemCharacteristic previousValue = _ProblemCharacteristic.Entity;
+				if ((previousValue != value) || (!_ProblemCharacteristic.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_ProblemCharacteristic.Entity = null;
+						previousValue.IntProblemCharacteristicValues.Remove(this);
+					}
+					_ProblemCharacteristic.Entity = value;
+					if (value != null) {
+						value.IntProblemCharacteristicValues.Add(this);
+						_ProblemCharacteristicId = value.Id;
+					}
+					else {
+						_ProblemCharacteristicId = default(int);
+					}
+					SendPropertyChanged("ProblemCharacteristic");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.IntResultValue")]
+[KnownType(typeof(IntResultValue))]	public partial class IntResultValue : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public IntResultValue()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Run = default(EntityRef<Run>);
+			_Result = default(EntityRef<Result>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnResultIdChanging(int value);
+		partial void OnResultIdChanged();
+		private int _ResultId;
+		[Column(Storage=@"_ResultId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int ResultId
+		{
+			get { return _ResultId; }
+			set {
+				if (_ResultId != value) {
+					if (_Result.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnResultIdChanging(value);
+					SendPropertyChanging();
+					_ResultId = value;
+					SendPropertyChanged("ResultId");
+					OnResultIdChanged();
+				}
+			}
+		}
+		
+		partial void OnRunIdChanging(int value);
+		partial void OnRunIdChanged();
+		private int _RunId;
+		[Column(Storage=@"_RunId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=2)]
+		public int RunId
+		{
+			get { return _RunId; }
+			set {
+				if (_RunId != value) {
+					if (_Run.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnRunIdChanging(value);
+					SendPropertyChanging();
+					_RunId = value;
+					SendPropertyChanged("RunId");
+					OnRunIdChanged();
+				}
+			}
+		}
+		
+		partial void OnValueChanging(int value);
+		partial void OnValueChanged();
+		private int _Value;
+		[Column(Storage=@"_Value", DbType=@"Int NOT NULL", CanBeNull=false)]
+		[DataMember(Order=3)]
+		public int Value
+		{
+			get { return _Value; }
+			set {
+				if (_Value != value) {
+					OnValueChanging(value);
+					SendPropertyChanging();
+					_Value = value;
+					SendPropertyChanged("Value");
+					OnValueChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntityRef<Run> _Run;
+		[Association(Name=@"Run_IntResultValue", Storage=@"_Run", ThisKey=@"RunId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=4, EmitDefaultValue=false)]
+		public Run Run
+		{
+			get {
+				return _Run.Entity;
+			}
+			set {
+				Run previousValue = _Run.Entity;
+				if ((previousValue != value) || (!_Run.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Run.Entity = null;
+						previousValue.IntResultValues.Remove(this);
+					}
+					_Run.Entity = value;
+					if (value != null) {
+						value.IntResultValues.Add(this);
+						_RunId = value.Id;
+					}
+					else {
+						_RunId = default(int);
+					}
+					SendPropertyChanged("Run");
+				}
+			}
+		}
+
+		private EntityRef<Result> _Result;
+		[Association(Name=@"Result_IntResultValue", Storage=@"_Result", ThisKey=@"ResultId", OtherKey=@"Id", IsForeignKey=true)]
+		[DataMember(Order=5, EmitDefaultValue=false)]
+		public Result Result
+		{
+			get {
+				return _Result.Entity;
+			}
+			set {
+				Result previousValue = _Result.Entity;
+				if ((previousValue != value) || (!_Result.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Result.Entity = null;
+						previousValue.IntResultValues.Remove(this);
+					}
+					_Result.Entity = value;
+					if (value != null) {
+						value.IntResultValues.Add(this);
+						_ResultId = value.Id;
+					}
+					else {
+						_ResultId = default(int);
+					}
+					SendPropertyChanged("Result");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.Platform")]
+[KnownType(typeof(Platform))]	public partial class Platform : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public Platform()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Problems = new EntitySet<Problem>(attach_Problems, detach_Problems);
+			_Algorithms = new EntitySet<Algorithm>(attach_Algorithms, detach_Algorithms);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnIdChanging(int value);
+		partial void OnIdChanged();
+		private int _Id;
+		[Column(Storage=@"_Id", AutoSync=AutoSync.OnInsert, DbType=@"Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int Id
+		{
+			get { return _Id; }
+			set {
+				if (_Id != value) {
+					OnIdChanging(value);
+					SendPropertyChanging();
+					_Id = value;
+					SendPropertyChanged("Id");
+					OnIdChanged();
+				}
+			}
+		}
+		
+		partial void OnNameChanging(string value);
+		partial void OnNameChanged();
+		private string _Name;
+		[Column(Storage=@"_Name", DbType=@"VarChar(200) NOT NULL", CanBeNull=false)]
+		[DataMember(Order=2)]
+		public string Name
+		{
+			get { return _Name; }
+			set {
+				if (_Name != value) {
+					OnNameChanging(value);
+					SendPropertyChanging();
+					_Name = value;
+					SendPropertyChanged("Name");
+					OnNameChanged();
+				}
+			}
+		}
+		
+		partial void OnDescriptionChanging(string value);
+		partial void OnDescriptionChanged();
+		private string _Description;
+		[Column(Storage=@"_Description", DbType=@"VarChar(MAX)")]
+		[DataMember(Order=3)]
+		public string Description
+		{
+			get { return _Description; }
+			set {
+				if (_Description != value) {
+					OnDescriptionChanging(value);
+					SendPropertyChanging();
+					_Description = value;
+					SendPropertyChanged("Description");
+					OnDescriptionChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntitySet<Problem> _Problems;
+		[Association(Name=@"Platform_Problem", Storage=@"_Problems", ThisKey=@"Id", OtherKey=@"PlatformId")]
+		[DataMember(Order=4, EmitDefaultValue=false)]
+		public EntitySet<Problem> Problems
+		{
+			get {
+				if (serializing && !_Problems.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _Problems;
+			}
+			set {
+				_Problems.Assign(value);
+			}
+		}
+
+		private void attach_Problems(Problem entity)
+		{
+			SendPropertyChanging();
+			entity.Platform = this;
+		}
+		
+		private void detach_Problems(Problem entity)
+		{
+			SendPropertyChanging();
+			entity.Platform = null;
+		}
+		private EntitySet<Algorithm> _Algorithms;
+		[Association(Name=@"Platform_Algorithm", Storage=@"_Algorithms", ThisKey=@"Id", OtherKey=@"PlatformId")]
+		[DataMember(Order=5, EmitDefaultValue=false)]
+		public EntitySet<Algorithm> Algorithms
+		{
+			get {
+				if (serializing && !_Algorithms.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _Algorithms;
+			}
+			set {
+				_Algorithms.Assign(value);
+			}
+		}
+
+		private void attach_Algorithms(Algorithm entity)
+		{
+			SendPropertyChanging();
+			entity.Platform = this;
+		}
+		
+		private void detach_Algorithms(Algorithm entity)
+		{
+			SendPropertyChanging();
+			entity.Platform = null;
+		}
+		#endregion
+		
+		#region Serialization
+		private bool serializing;
+		
+		[OnSerializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerializing(StreamingContext context)
+		{
+			serializing = true;
+		}
+		
+		[OnSerialized()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerialized(StreamingContext context)
+		{
+			serializing = false;
+		}
+		
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.Problem")]
+[KnownType(typeof(Problem))]	public partial class Problem : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public Problem()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_CharProblemCharacteristicValues = new EntitySet<CharProblemCharacteristicValue>(attach_CharProblemCharacteristicValues, detach_CharProblemCharacteristicValues);
+			_Experiments = new EntitySet<Experiment>(attach_Experiments, detach_Experiments);
+			_FloatProblemCharacteristicValues = new EntitySet<FloatProblemCharacteristicValue>(attach_FloatProblemCharacteristicValues, detach_FloatProblemCharacteristicValues);
+			_IntProblemCharacteristicValues = new EntitySet<IntProblemCharacteristicValue>(attach_IntProblemCharacteristicValues, detach_IntProblemCharacteristicValues);
+			_Problem_Parameters = new EntitySet<Problem_Parameter>(attach_Problem_Parameters, detach_Problem_Parameters);
+			_ProblemData = default(EntityRef<ProblemData>);
+			_Platform = default(EntityRef<Platform>);
+			_ProblemClass = default(EntityRef<ProblemClass>);
+			_SolutionRepresentation = default(EntityRef<SolutionRepresentation>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnIdChanging(int value);
+		partial void OnIdChanged();
+		private int _Id;
+		[Column(Storage=@"_Id", AutoSync=AutoSync.OnInsert, DbType=@"Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int Id
+		{
+			get { return _Id; }
+			set {
+				if (_Id != value) {
+					OnIdChanging(value);
+					SendPropertyChanging();
+					_Id = value;
+					SendPropertyChanged("Id");
+					OnIdChanged();
+				}
+			}
+		}
+		
+		partial void OnProblemClassIdChanging(int value);
+		partial void OnProblemClassIdChanged();
+		private int _ProblemClassId;
+		[Column(Storage=@"_ProblemClassId", DbType=@"Int NOT NULL", CanBeNull=false)]
+		[DataMember(Order=2)]
+		public int ProblemClassId
+		{
+			get { return _ProblemClassId; }
+			set {
+				if (_ProblemClassId != value) {
+					if (_ProblemClass.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnProblemClassIdChanging(value);
+					SendPropertyChanging();
+					_ProblemClassId = value;
+					SendPropertyChanged("ProblemClassId");
+					OnProblemClassIdChanged();
+				}
+			}
+		}
+		
+		partial void OnPlatformIdChanging(int value);
+		partial void OnPlatformIdChanged();
+		private int _PlatformId;
+		[Column(Storage=@"_PlatformId", DbType=@"Int NOT NULL", CanBeNull=false)]
+		[DataMember(Order=3)]
+		public int PlatformId
+		{
+			get { return _PlatformId; }
+			set {
+				if (_PlatformId != value) {
+					if (_Platform.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnPlatformIdChanging(value);
+					SendPropertyChanging();
+					_PlatformId = value;
+					SendPropertyChanged("PlatformId");
+					OnPlatformIdChanged();
+				}
+			}
+		}
+		
+		partial void OnSolutionRepresentationIdChanging(int value);
+		partial void OnSolutionRepresentationIdChanged();
+		private int _SolutionRepresentationId;
+		[Column(Storage=@"_SolutionRepresentationId", DbType=@"Int NOT NULL", CanBeNull=false)]
+		[DataMember(Order=4)]
+		public int SolutionRepresentationId
+		{
+			get { return _SolutionRepresentationId; }
+			set {
+				if (_SolutionRepresentationId != value) {
+					if (_SolutionRepresentation.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnSolutionRepresentationIdChanging(value);
+					SendPropertyChanging();
+					_SolutionRepresentationId = value;
+					SendPropertyChanged("SolutionRepresentationId");
+					OnSolutionRepresentationIdChanged();
+				}
+			}
+		}
+		
+		partial void OnNameChanging(string value);
+		partial void OnNameChanged();
+		private string _Name;
+		[Column(Storage=@"_Name", DbType=@"VarChar(200) NOT NULL", CanBeNull=false)]
+		[DataMember(Order=5)]
+		public string Name
+		{
+			get { return _Name; }
+			set {
+				if (_Name != value) {
+					OnNameChanging(value);
+					SendPropertyChanging();
+					_Name = value;
+					SendPropertyChanged("Name");
+					OnNameChanged();
+				}
+			}
+		}
+		
+		partial void OnDescriptionChanging(string value);
+		partial void OnDescriptionChanged();
+		private string _Description;
+		[Column(Storage=@"_Description", DbType=@"VarChar(MAX)")]
+		[DataMember(Order=6)]
+		public string Description
+		{
+			get { return _Description; }
+			set {
+				if (_Description != value) {
+					OnDescriptionChanging(value);
+					SendPropertyChanging();
+					_Description = value;
+					SendPropertyChanged("Description");
+					OnDescriptionChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntitySet<CharProblemCharacteristicValue> _CharProblemCharacteristicValues;
+		[Association(Name=@"Problem_CharProblemCharacteristicValue", Storage=@"_CharProblemCharacteristicValues", ThisKey=@"Id", OtherKey=@"ProblemId")]
+		[DataMember(Order=7, EmitDefaultValue=false)]
+		public EntitySet<CharProblemCharacteristicValue> CharProblemCharacteristicValues
+		{
+			get {
+				if (serializing && !_CharProblemCharacteristicValues.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _CharProblemCharacteristicValues;
+			}
+			set {
+				_CharProblemCharacteristicValues.Assign(value);
+			}
+		}
+
+		private void attach_CharProblemCharacteristicValues(CharProblemCharacteristicValue entity)
+		{
+			SendPropertyChanging();
+			entity.Problem = this;
+		}
+		
+		private void detach_CharProblemCharacteristicValues(CharProblemCharacteristicValue entity)
+		{
+			SendPropertyChanging();
+			entity.Problem = null;
+		}
+		private EntitySet<Experiment> _Experiments;
+		[Association(Name=@"Problem_Experiment", Storage=@"_Experiments", ThisKey=@"Id", OtherKey=@"ProblemId")]
+		[DataMember(Order=8, EmitDefaultValue=false)]
+		public EntitySet<Experiment> Experiments
+		{
+			get {
+				if (serializing && !_Experiments.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _Experiments;
+			}
+			set {
+				_Experiments.Assign(value);
+			}
+		}
+
+		private void attach_Experiments(Experiment entity)
+		{
+			SendPropertyChanging();
+			entity.Problem = this;
+		}
+		
+		private void detach_Experiments(Experiment entity)
+		{
+			SendPropertyChanging();
+			entity.Problem = null;
+		}
+		private EntitySet<FloatProblemCharacteristicValue> _FloatProblemCharacteristicValues;
+		[Association(Name=@"Problem_FloatProblemCharacteristicValue", Storage=@"_FloatProblemCharacteristicValues", ThisKey=@"Id", OtherKey=@"ProblemId")]
+		[DataMember(Order=9, EmitDefaultValue=false)]
+		public EntitySet<FloatProblemCharacteristicValue> FloatProblemCharacteristicValues
+		{
+			get {
+				if (serializing && !_FloatProblemCharacteristicValues.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _FloatProblemCharacteristicValues;
+			}
+			set {
+				_FloatProblemCharacteristicValues.Assign(value);
+			}
+		}
+
+		private void attach_FloatProblemCharacteristicValues(FloatProblemCharacteristicValue entity)
+		{
+			SendPropertyChanging();
+			entity.Problem = this;
+		}
+		
+		private void detach_FloatProblemCharacteristicValues(FloatProblemCharacteristicValue entity)
+		{
+			SendPropertyChanging();
+			entity.Problem = null;
+		}
+		private EntitySet<IntProblemCharacteristicValue> _IntProblemCharacteristicValues;
+		[Association(Name=@"Problem_IntProblemCharacteristicValue", Storage=@"_IntProblemCharacteristicValues", ThisKey=@"Id", OtherKey=@"ProblemId")]
+		[DataMember(Order=10, EmitDefaultValue=false)]
+		public EntitySet<IntProblemCharacteristicValue> IntProblemCharacteristicValues
+		{
+			get {
+				if (serializing && !_IntProblemCharacteristicValues.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _IntProblemCharacteristicValues;
+			}
+			set {
+				_IntProblemCharacteristicValues.Assign(value);
+			}
+		}
+
+		private void attach_IntProblemCharacteristicValues(IntProblemCharacteristicValue entity)
+		{
+			SendPropertyChanging();
+			entity.Problem = this;
+		}
+		
+		private void detach_IntProblemCharacteristicValues(IntProblemCharacteristicValue entity)
+		{
+			SendPropertyChanging();
+			entity.Problem = null;
+		}
+		private EntitySet<Problem_Parameter> _Problem_Parameters;
+		[Association(Name=@"Problem_Problem_Parameter", Storage=@"_Problem_Parameters", ThisKey=@"Id", OtherKey=@"ProblemId")]
+		[DataMember(Order=11, EmitDefaultValue=false)]
+		public EntitySet<Problem_Parameter> Problem_Parameters
+		{
+			get {
+				if (serializing && !_Problem_Parameters.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _Problem_Parameters;
+			}
+			set {
+				_Problem_Parameters.Assign(value);
+			}
+		}
+
+		private void attach_Problem_Parameters(Problem_Parameter entity)
+		{
+			SendPropertyChanging();
+			entity.Problem = this;
+		}
+		
+		private void detach_Problem_Parameters(Problem_Parameter entity)
+		{
+			SendPropertyChanging();
+			entity.Problem = null;
+		}
+		private EntityRef<ProblemData> _ProblemData;
+		[Association(Name=@"Problem_ProblemData", Storage=@"_ProblemData", ThisKey=@"Id", OtherKey=@"ProblemId", IsUnique=true, IsForeignKey=false)]
+		[DataMember(Order=12, EmitDefaultValue=false)]
+		public ProblemData ProblemData
+		{
+			get {
+				if (serializing && !_ProblemData.HasLoadedOrAssignedValue) {
+					return null;
+				}
+				return _ProblemData.Entity;
+			}
+			set {
+				ProblemData previousValue = _ProblemData.Entity;
+				if ((previousValue != value) || (!_ProblemData.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_ProblemData.Entity = null;
+						previousValue.Problem = null;
+					}
+					_ProblemData.Entity = value;
+					if (value != null) {
+						value.Problem = this;
+					}
+					SendPropertyChanged("ProblemData");
+				}
+			}
+		}
+
+		private EntityRef<Platform> _Platform;
+		[Association(Name=@"Platform_Problem", Storage=@"_Platform", ThisKey=@"PlatformId", OtherKey=@"Id", IsForeignKey=true)]
+		[DataMember(Order=13, EmitDefaultValue=false)]
+		public Platform Platform
+		{
+			get {
+				if (serializing && !_Platform.HasLoadedOrAssignedValue) {
+					return null;
+				}
+				return _Platform.Entity;
+			}
+			set {
+				Platform previousValue = _Platform.Entity;
+				if ((previousValue != value) || (!_Platform.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Platform.Entity = null;
+						previousValue.Problems.Remove(this);
+					}
+					_Platform.Entity = value;
+					if (value != null) {
+						value.Problems.Add(this);
+						_PlatformId = value.Id;
+					}
+					else {
+						_PlatformId = default(int);
+					}
+					SendPropertyChanged("Platform");
+				}
+			}
+		}
+
+		private EntityRef<ProblemClass> _ProblemClass;
+		[Association(Name=@"ProblemClass_Problem", Storage=@"_ProblemClass", ThisKey=@"ProblemClassId", OtherKey=@"Id", IsForeignKey=true)]
+		[DataMember(Order=14, EmitDefaultValue=false)]
+		public ProblemClass ProblemClass
+		{
+			get {
+				if (serializing && !_ProblemClass.HasLoadedOrAssignedValue) {
+					return null;
+				}
+				return _ProblemClass.Entity;
+			}
+			set {
+				ProblemClass previousValue = _ProblemClass.Entity;
+				if ((previousValue != value) || (!_ProblemClass.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_ProblemClass.Entity = null;
+						previousValue.Problems.Remove(this);
+					}
+					_ProblemClass.Entity = value;
+					if (value != null) {
+						value.Problems.Add(this);
+						_ProblemClassId = value.Id;
+					}
+					else {
+						_ProblemClassId = default(int);
+					}
+					SendPropertyChanged("ProblemClass");
+				}
+			}
+		}
+
+		private EntityRef<SolutionRepresentation> _SolutionRepresentation;
+		[Association(Name=@"SolutionRepresentation_Problem", Storage=@"_SolutionRepresentation", ThisKey=@"SolutionRepresentationId", OtherKey=@"Id", IsForeignKey=true)]
+		[DataMember(Order=15, EmitDefaultValue=false)]
+		public SolutionRepresentation SolutionRepresentation
+		{
+			get {
+				if (serializing && !_SolutionRepresentation.HasLoadedOrAssignedValue) {
+					return null;
+				}
+				return _SolutionRepresentation.Entity;
+			}
+			set {
+				SolutionRepresentation previousValue = _SolutionRepresentation.Entity;
+				if ((previousValue != value) || (!_SolutionRepresentation.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_SolutionRepresentation.Entity = null;
+						previousValue.Problems.Remove(this);
+					}
+					_SolutionRepresentation.Entity = value;
+					if (value != null) {
+						value.Problems.Add(this);
+						_SolutionRepresentationId = value.Id;
+					}
+					else {
+						_SolutionRepresentationId = default(int);
+					}
+					SendPropertyChanged("SolutionRepresentation");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		private bool serializing;
+		
+		[OnSerializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerializing(StreamingContext context)
+		{
+			serializing = true;
+		}
+		
+		[OnSerialized()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerialized(StreamingContext context)
+		{
+			serializing = false;
+		}
+		
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.Problem_Parameter")]
+[KnownType(typeof(Problem_Parameter))]	public partial class Problem_Parameter : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public Problem_Parameter()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Parameter = default(EntityRef<Parameter>);
+			_Problem = default(EntityRef<Problem>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnProblemIdChanging(int value);
+		partial void OnProblemIdChanged();
+		private int _ProblemId;
+		[Column(Storage=@"_ProblemId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int ProblemId
+		{
+			get { return _ProblemId; }
+			set {
+				if (_ProblemId != value) {
+					if (_Problem.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnProblemIdChanging(value);
+					SendPropertyChanging();
+					_ProblemId = value;
+					SendPropertyChanged("ProblemId");
+					OnProblemIdChanged();
+				}
+			}
+		}
+		
+		partial void OnParameterIdChanging(int value);
+		partial void OnParameterIdChanged();
+		private int _ParameterId;
+		[Column(Storage=@"_ParameterId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=2)]
+		public int ParameterId
+		{
+			get { return _ParameterId; }
+			set {
+				if (_ParameterId != value) {
+					if (_Parameter.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnParameterIdChanging(value);
+					SendPropertyChanging();
+					_ParameterId = value;
+					SendPropertyChanged("ParameterId");
+					OnParameterIdChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntityRef<Parameter> _Parameter;
+		[Association(Name=@"Parameter_Problem_Parameter", Storage=@"_Parameter", ThisKey=@"ParameterId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=3, EmitDefaultValue=false)]
+		public Parameter Parameter
+		{
+			get {
+				return _Parameter.Entity;
+			}
+			set {
+				Parameter previousValue = _Parameter.Entity;
+				if ((previousValue != value) || (!_Parameter.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Parameter.Entity = null;
+						previousValue.Problem_Parameters.Remove(this);
+					}
+					_Parameter.Entity = value;
+					if (value != null) {
+						value.Problem_Parameters.Add(this);
+						_ParameterId = value.Id;
+					}
+					else {
+						_ParameterId = default(int);
+					}
+					SendPropertyChanged("Parameter");
+				}
+			}
+		}
+
+		private EntityRef<Problem> _Problem;
+		[Association(Name=@"Problem_Problem_Parameter", Storage=@"_Problem", ThisKey=@"ProblemId", OtherKey=@"Id", IsForeignKey=true)]
+		[DataMember(Order=4, EmitDefaultValue=false)]
+		public Problem Problem
+		{
+			get {
+				return _Problem.Entity;
+			}
+			set {
+				Problem previousValue = _Problem.Entity;
+				if ((previousValue != value) || (!_Problem.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Problem.Entity = null;
+						previousValue.Problem_Parameters.Remove(this);
+					}
+					_Problem.Entity = value;
+					if (value != null) {
+						value.Problem_Parameters.Add(this);
+						_ProblemId = value.Id;
+					}
+					else {
+						_ProblemId = default(int);
+					}
+					SendPropertyChanged("Problem");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.ProblemCharacteristic")]
+[KnownType(typeof(ProblemCharacteristic))]	public partial class ProblemCharacteristic : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public ProblemCharacteristic()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_CharProblemCharacteristicValues = new EntitySet<CharProblemCharacteristicValue>(attach_CharProblemCharacteristicValues, detach_CharProblemCharacteristicValues);
+			_FloatProblemCharacteristicValues = new EntitySet<FloatProblemCharacteristicValue>(attach_FloatProblemCharacteristicValues, detach_FloatProblemCharacteristicValues);
+			_IntProblemCharacteristicValues = new EntitySet<IntProblemCharacteristicValue>(attach_IntProblemCharacteristicValues, detach_IntProblemCharacteristicValues);
+			_DataType = default(EntityRef<DataType>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnIdChanging(int value);
+		partial void OnIdChanged();
+		private int _Id;
+		[Column(Storage=@"_Id", AutoSync=AutoSync.OnInsert, DbType=@"Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int Id
+		{
+			get { return _Id; }
+			set {
+				if (_Id != value) {
+					OnIdChanging(value);
+					SendPropertyChanging();
+					_Id = value;
+					SendPropertyChanged("Id");
+					OnIdChanged();
+				}
+			}
+		}
+		
+		partial void OnNameChanging(string value);
+		partial void OnNameChanged();
+		private string _Name;
+		[Column(Storage=@"_Name", DbType=@"VarChar(200) NOT NULL", CanBeNull=false)]
+		[DataMember(Order=2)]
+		public string Name
+		{
+			get { return _Name; }
+			set {
+				if (_Name != value) {
+					OnNameChanging(value);
+					SendPropertyChanging();
+					_Name = value;
+					SendPropertyChanged("Name");
+					OnNameChanged();
+				}
+			}
+		}
+		
+		partial void OnDescriptionChanging(string value);
+		partial void OnDescriptionChanged();
+		private string _Description;
+		[Column(Storage=@"_Description", DbType=@"VarChar(MAX)")]
+		[DataMember(Order=3)]
+		public string Description
+		{
+			get { return _Description; }
+			set {
+				if (_Description != value) {
+					OnDescriptionChanging(value);
+					SendPropertyChanging();
+					_Description = value;
+					SendPropertyChanged("Description");
+					OnDescriptionChanged();
+				}
+			}
+		}
+		
+		partial void OnDataTypeIdChanging(int value);
+		partial void OnDataTypeIdChanged();
+		private int _DataTypeId;
+		[Column(Storage=@"_DataTypeId", DbType=@"Int NOT NULL", CanBeNull=false)]
+		[DataMember(Order=4)]
+		public int DataTypeId
+		{
+			get { return _DataTypeId; }
+			set {
+				if (_DataTypeId != value) {
+					if (_DataType.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnDataTypeIdChanging(value);
+					SendPropertyChanging();
+					_DataTypeId = value;
+					SendPropertyChanged("DataTypeId");
+					OnDataTypeIdChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntitySet<CharProblemCharacteristicValue> _CharProblemCharacteristicValues;
+		[Association(Name=@"ProblemCharacteristic_CharProblemCharacteristicValue", Storage=@"_CharProblemCharacteristicValues", ThisKey=@"Id", OtherKey=@"ProblemCharacteristicId")]
+		[DataMember(Order=5, EmitDefaultValue=false)]
+		public EntitySet<CharProblemCharacteristicValue> CharProblemCharacteristicValues
+		{
+			get {
+				if (serializing && !_CharProblemCharacteristicValues.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _CharProblemCharacteristicValues;
+			}
+			set {
+				_CharProblemCharacteristicValues.Assign(value);
+			}
+		}
+
+		private void attach_CharProblemCharacteristicValues(CharProblemCharacteristicValue entity)
+		{
+			SendPropertyChanging();
+			entity.ProblemCharacteristic = this;
+		}
+		
+		private void detach_CharProblemCharacteristicValues(CharProblemCharacteristicValue entity)
+		{
+			SendPropertyChanging();
+			entity.ProblemCharacteristic = null;
+		}
+		private EntitySet<FloatProblemCharacteristicValue> _FloatProblemCharacteristicValues;
+		[Association(Name=@"ProblemCharacteristic_FloatProblemCharacteristicValue", Storage=@"_FloatProblemCharacteristicValues", ThisKey=@"Id", OtherKey=@"ProblemCharacteristicId")]
+		[DataMember(Order=6, EmitDefaultValue=false)]
+		public EntitySet<FloatProblemCharacteristicValue> FloatProblemCharacteristicValues
+		{
+			get {
+				if (serializing && !_FloatProblemCharacteristicValues.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _FloatProblemCharacteristicValues;
+			}
+			set {
+				_FloatProblemCharacteristicValues.Assign(value);
+			}
+		}
+
+		private void attach_FloatProblemCharacteristicValues(FloatProblemCharacteristicValue entity)
+		{
+			SendPropertyChanging();
+			entity.ProblemCharacteristic = this;
+		}
+		
+		private void detach_FloatProblemCharacteristicValues(FloatProblemCharacteristicValue entity)
+		{
+			SendPropertyChanging();
+			entity.ProblemCharacteristic = null;
+		}
+		private EntitySet<IntProblemCharacteristicValue> _IntProblemCharacteristicValues;
+		[Association(Name=@"ProblemCharacteristic_IntProblemCharacteristicValue", Storage=@"_IntProblemCharacteristicValues", ThisKey=@"Id", OtherKey=@"ProblemCharacteristicId")]
+		[DataMember(Order=7, EmitDefaultValue=false)]
+		public EntitySet<IntProblemCharacteristicValue> IntProblemCharacteristicValues
+		{
+			get {
+				if (serializing && !_IntProblemCharacteristicValues.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _IntProblemCharacteristicValues;
+			}
+			set {
+				_IntProblemCharacteristicValues.Assign(value);
+			}
+		}
+
+		private void attach_IntProblemCharacteristicValues(IntProblemCharacteristicValue entity)
+		{
+			SendPropertyChanging();
+			entity.ProblemCharacteristic = this;
+		}
+		
+		private void detach_IntProblemCharacteristicValues(IntProblemCharacteristicValue entity)
+		{
+			SendPropertyChanging();
+			entity.ProblemCharacteristic = null;
+		}
+		private EntityRef<DataType> _DataType;
+		[Association(Name=@"DataType_ProblemCharacteristic", Storage=@"_DataType", ThisKey=@"DataTypeId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=8, EmitDefaultValue=false)]
+		public DataType DataType
+		{
+			get {
+				if (serializing && !_DataType.HasLoadedOrAssignedValue) {
+					return null;
+				}
+				return _DataType.Entity;
+			}
+			set {
+				DataType previousValue = _DataType.Entity;
+				if ((previousValue != value) || (!_DataType.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_DataType.Entity = null;
+						previousValue.ProblemCharacteristics.Remove(this);
+					}
+					_DataType.Entity = value;
+					if (value != null) {
+						value.ProblemCharacteristics.Add(this);
+						_DataTypeId = value.Id;
+					}
+					else {
+						_DataTypeId = default(int);
+					}
+					SendPropertyChanged("DataType");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		private bool serializing;
+		
+		[OnSerializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerializing(StreamingContext context)
+		{
+			serializing = true;
+		}
+		
+		[OnSerialized()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerialized(StreamingContext context)
+		{
+			serializing = false;
+		}
+		
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.ProblemClass")]
+[KnownType(typeof(ProblemClass))]	public partial class ProblemClass : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public ProblemClass()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Problems = new EntitySet<Problem>(attach_Problems, detach_Problems);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnIdChanging(int value);
+		partial void OnIdChanged();
+		private int _Id;
+		[Column(Storage=@"_Id", AutoSync=AutoSync.OnInsert, DbType=@"Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int Id
+		{
+			get { return _Id; }
+			set {
+				if (_Id != value) {
+					OnIdChanging(value);
+					SendPropertyChanging();
+					_Id = value;
+					SendPropertyChanged("Id");
+					OnIdChanged();
+				}
+			}
+		}
+		
+		partial void OnNameChanging(string value);
+		partial void OnNameChanged();
+		private string _Name;
+		[Column(Storage=@"_Name", DbType=@"VarChar(200) NOT NULL", CanBeNull=false)]
+		[DataMember(Order=2)]
+		public string Name
+		{
+			get { return _Name; }
+			set {
+				if (_Name != value) {
+					OnNameChanging(value);
+					SendPropertyChanging();
+					_Name = value;
+					SendPropertyChanged("Name");
+					OnNameChanged();
+				}
+			}
+		}
+		
+		partial void OnDescriptionChanging(string value);
+		partial void OnDescriptionChanged();
+		private string _Description;
+		[Column(Storage=@"_Description", DbType=@"VarChar(100)")]
+		[DataMember(Order=3)]
+		public string Description
+		{
+			get { return _Description; }
+			set {
+				if (_Description != value) {
+					OnDescriptionChanging(value);
+					SendPropertyChanging();
+					_Description = value;
+					SendPropertyChanged("Description");
+					OnDescriptionChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntitySet<Problem> _Problems;
+		[Association(Name=@"ProblemClass_Problem", Storage=@"_Problems", ThisKey=@"Id", OtherKey=@"ProblemClassId")]
+		[DataMember(Order=4, EmitDefaultValue=false)]
+		public EntitySet<Problem> Problems
+		{
+			get {
+				if (serializing && !_Problems.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _Problems;
+			}
+			set {
+				_Problems.Assign(value);
+			}
+		}
+
+		private void attach_Problems(Problem entity)
+		{
+			SendPropertyChanging();
+			entity.ProblemClass = this;
+		}
+		
+		private void detach_Problems(Problem entity)
+		{
+			SendPropertyChanging();
+			entity.ProblemClass = null;
+		}
+		#endregion
+		
+		#region Serialization
+		private bool serializing;
+		
+		[OnSerializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerializing(StreamingContext context)
+		{
+			serializing = true;
+		}
+		
+		[OnSerialized()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerialized(StreamingContext context)
+		{
+			serializing = false;
+		}
+		
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.ProblemData")]
+[KnownType(typeof(ProblemData))]	public partial class ProblemData : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public ProblemData()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Problem = default(EntityRef<Problem>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnProblemIdChanging(int value);
+		partial void OnProblemIdChanged();
+		private int _ProblemId;
+		[Column(Storage=@"_ProblemId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int ProblemId
+		{
+			get { return _ProblemId; }
+			set {
+				if (_ProblemId != value) {
+					if (_Problem.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnProblemIdChanging(value);
+					SendPropertyChanging();
+					_ProblemId = value;
+					SendPropertyChanged("ProblemId");
+					OnProblemIdChanged();
+				}
+			}
+		}
+		
+		partial void OnDataChanging(Binary value);
+		partial void OnDataChanged();
+		private Binary _Data;
+		[Column(Storage=@"_Data", DbType=@"VarBinary(MAX) NOT NULL", CanBeNull=false, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=2)]
+		public Binary Data
+		{
+			get { return _Data; }
+			set {
+				if (_Data != value) {
+					OnDataChanging(value);
+					SendPropertyChanging();
+					_Data = value;
+					SendPropertyChanged("Data");
+					OnDataChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntityRef<Problem> _Problem;
+		[Association(Name=@"Problem_ProblemData", Storage=@"_Problem", ThisKey=@"ProblemId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=3, EmitDefaultValue=false)]
+		public Problem Problem
+		{
+			get {
+				return _Problem.Entity;
+			}
+			set {
+				Problem previousValue = _Problem.Entity;
+				if ((previousValue != value) || (!_Problem.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Problem.Entity = null;
+						previousValue.ProblemData = null;
+					}
+					_Problem.Entity = value;
+					if (value != null) {
+						value.ProblemData = this;
+						_ProblemId = value.Id;
+					}
+					else {
+						_ProblemId = default(int);
+					}
+					SendPropertyChanged("Problem");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.Project")]
+[KnownType(typeof(Project))]	public partial class Project : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public Project()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Experiments = new EntitySet<Experiment>(attach_Experiments, detach_Experiments);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnIdChanging(int value);
+		partial void OnIdChanged();
+		private int _Id;
+		[Column(Storage=@"_Id", AutoSync=AutoSync.OnInsert, DbType=@"Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int Id
+		{
+			get { return _Id; }
+			set {
+				if (_Id != value) {
+					OnIdChanging(value);
+					SendPropertyChanging();
+					_Id = value;
+					SendPropertyChanged("Id");
+					OnIdChanged();
+				}
+			}
+		}
+		
+		partial void OnNameChanging(string value);
+		partial void OnNameChanged();
+		private string _Name;
+		[Column(Storage=@"_Name", DbType=@"VarChar(200) NOT NULL", CanBeNull=false)]
+		[DataMember(Order=2)]
+		public string Name
+		{
+			get { return _Name; }
+			set {
+				if (_Name != value) {
+					OnNameChanging(value);
+					SendPropertyChanging();
+					_Name = value;
+					SendPropertyChanged("Name");
+					OnNameChanged();
+				}
+			}
+		}
+		
+		partial void OnDescriptionChanging(string value);
+		partial void OnDescriptionChanged();
+		private string _Description;
+		[Column(Storage=@"_Description", DbType=@"VarChar(MAX)")]
+		[DataMember(Order=3)]
+		public string Description
+		{
+			get { return _Description; }
+			set {
+				if (_Description != value) {
+					OnDescriptionChanging(value);
+					SendPropertyChanging();
+					_Description = value;
+					SendPropertyChanged("Description");
+					OnDescriptionChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntitySet<Experiment> _Experiments;
+		[Association(Name=@"Project_Experiment", Storage=@"_Experiments", ThisKey=@"Id", OtherKey=@"ProjectId")]
+		[DataMember(Order=4, EmitDefaultValue=false)]
+		public EntitySet<Experiment> Experiments
+		{
+			get {
+				if (serializing && !_Experiments.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _Experiments;
+			}
+			set {
+				_Experiments.Assign(value);
+			}
+		}
+
+		private void attach_Experiments(Experiment entity)
+		{
+			SendPropertyChanging();
+			entity.Project = this;
+		}
+		
+		private void detach_Experiments(Experiment entity)
+		{
+			SendPropertyChanging();
+			entity.Project = null;
+		}
+		#endregion
+		
+		#region Serialization
+		private bool serializing;
+		
+		[OnSerializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerializing(StreamingContext context)
+		{
+			serializing = true;
+		}
+		
+		[OnSerialized()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerialized(StreamingContext context)
+		{
+			serializing = false;
+		}
+		
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.Run")]
+[KnownType(typeof(Run))]	public partial class Run : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public Run()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_BlobResultValues = new EntitySet<BlobResultValue>(attach_BlobResultValues, detach_BlobResultValues);
+			_CharResultValues = new EntitySet<CharResultValue>(attach_CharResultValues, detach_CharResultValues);
+			_FloatResultValues = new EntitySet<FloatResultValue>(attach_FloatResultValues, detach_FloatResultValues);
+			_IntResultValues = new EntitySet<IntResultValue>(attach_IntResultValues, detach_IntResultValues);
+			_Client = default(EntityRef<Client>);
+			_Experiment = default(EntityRef<Experiment>);
+			_User = default(EntityRef<User>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnIdChanging(int value);
+		partial void OnIdChanged();
+		private int _Id;
+		[Column(Storage=@"_Id", AutoSync=AutoSync.OnInsert, DbType=@"Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int Id
+		{
+			get { return _Id; }
+			set {
+				if (_Id != value) {
+					OnIdChanging(value);
+					SendPropertyChanging();
+					_Id = value;
+					SendPropertyChanged("Id");
+					OnIdChanged();
+				}
+			}
+		}
+		
+		partial void OnExperimentIdChanging(int value);
+		partial void OnExperimentIdChanged();
+		private int _ExperimentId;
+		[Column(Storage=@"_ExperimentId", DbType=@"Int NOT NULL", CanBeNull=false)]
+		[DataMember(Order=2)]
+		public int ExperimentId
+		{
+			get { return _ExperimentId; }
+			set {
+				if (_ExperimentId != value) {
+					if (_Experiment.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnExperimentIdChanging(value);
+					SendPropertyChanging();
+					_ExperimentId = value;
+					SendPropertyChanged("ExperimentId");
+					OnExperimentIdChanged();
+				}
+			}
+		}
+		
+		partial void OnFinishedDateChanging(DateTime? value);
+		partial void OnFinishedDateChanged();
+		private DateTime? _FinishedDate;
+		[Column(Storage=@"_FinishedDate", DbType=@"DateTime2")]
+		[DataMember(Order=3)]
+		public DateTime? FinishedDate
+		{
+			get { return _FinishedDate; }
+			set {
+				if (_FinishedDate != value) {
+					OnFinishedDateChanging(value);
+					SendPropertyChanging();
+					_FinishedDate = value;
+					SendPropertyChanged("FinishedDate");
+					OnFinishedDateChanged();
+				}
+			}
+		}
+		
+		partial void OnUserIdChanging(Guid value);
+		partial void OnUserIdChanged();
+		private Guid _UserId;
+		[Column(Storage=@"_UserId", DbType=@"UniqueIdentifier NOT NULL", CanBeNull=false)]
+		[DataMember(Order=4)]
+		public Guid UserId
+		{
+			get { return _UserId; }
+			set {
+				if (_UserId != value) {
+					if (_User.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnUserIdChanging(value);
+					SendPropertyChanging();
+					_UserId = value;
+					SendPropertyChanged("UserId");
+					OnUserIdChanged();
+				}
+			}
+		}
+		
+		partial void OnClientIdChanging(Guid value);
+		partial void OnClientIdChanged();
+		private Guid _ClientId;
+		[Column(Storage=@"_ClientId", DbType=@"UniqueIdentifier NOT NULL", CanBeNull=false)]
+		[DataMember(Order=5)]
+		public Guid ClientId
+		{
+			get { return _ClientId; }
+			set {
+				if (_ClientId != value) {
+					if (_Client.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnClientIdChanging(value);
+					SendPropertyChanging();
+					_ClientId = value;
+					SendPropertyChanged("ClientId");
+					OnClientIdChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntitySet<BlobResultValue> _BlobResultValues;
+		[Association(Name=@"Run_BlobResultValue", Storage=@"_BlobResultValues", ThisKey=@"Id", OtherKey=@"RunId")]
+		[DataMember(Order=6, EmitDefaultValue=false)]
+		public EntitySet<BlobResultValue> BlobResultValues
+		{
+			get {
+				if (serializing && !_BlobResultValues.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _BlobResultValues;
+			}
+			set {
+				_BlobResultValues.Assign(value);
+			}
+		}
+
+		private void attach_BlobResultValues(BlobResultValue entity)
+		{
+			SendPropertyChanging();
+			entity.Run = this;
+		}
+		
+		private void detach_BlobResultValues(BlobResultValue entity)
+		{
+			SendPropertyChanging();
+			entity.Run = null;
+		}
+		private EntitySet<CharResultValue> _CharResultValues;
+		[Association(Name=@"Run_CharResultValue", Storage=@"_CharResultValues", ThisKey=@"Id", OtherKey=@"RunId")]
+		[DataMember(Order=7, EmitDefaultValue=false)]
+		public EntitySet<CharResultValue> CharResultValues
+		{
+			get {
+				if (serializing && !_CharResultValues.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _CharResultValues;
+			}
+			set {
+				_CharResultValues.Assign(value);
+			}
+		}
+
+		private void attach_CharResultValues(CharResultValue entity)
+		{
+			SendPropertyChanging();
+			entity.Run = this;
+		}
+		
+		private void detach_CharResultValues(CharResultValue entity)
+		{
+			SendPropertyChanging();
+			entity.Run = null;
+		}
+		private EntitySet<FloatResultValue> _FloatResultValues;
+		[Association(Name=@"Run_FloatResultValue", Storage=@"_FloatResultValues", ThisKey=@"Id", OtherKey=@"RunId")]
+		[DataMember(Order=8, EmitDefaultValue=false)]
+		public EntitySet<FloatResultValue> FloatResultValues
+		{
+			get {
+				if (serializing && !_FloatResultValues.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _FloatResultValues;
+			}
+			set {
+				_FloatResultValues.Assign(value);
+			}
+		}
+
+		private void attach_FloatResultValues(FloatResultValue entity)
+		{
+			SendPropertyChanging();
+			entity.Run = this;
+		}
+		
+		private void detach_FloatResultValues(FloatResultValue entity)
+		{
+			SendPropertyChanging();
+			entity.Run = null;
+		}
+		private EntitySet<IntResultValue> _IntResultValues;
+		[Association(Name=@"Run_IntResultValue", Storage=@"_IntResultValues", ThisKey=@"Id", OtherKey=@"RunId")]
+		[DataMember(Order=9, EmitDefaultValue=false)]
+		public EntitySet<IntResultValue> IntResultValues
+		{
+			get {
+				if (serializing && !_IntResultValues.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _IntResultValues;
+			}
+			set {
+				_IntResultValues.Assign(value);
+			}
+		}
+
+		private void attach_IntResultValues(IntResultValue entity)
+		{
+			SendPropertyChanging();
+			entity.Run = this;
+		}
+		
+		private void detach_IntResultValues(IntResultValue entity)
+		{
+			SendPropertyChanging();
+			entity.Run = null;
+		}
+		private EntityRef<Client> _Client;
+		[Association(Name=@"Client_Run", Storage=@"_Client", ThisKey=@"ClientId", OtherKey=@"Id", IsForeignKey=true)]
+		[DataMember(Order=10, EmitDefaultValue=false)]
+		public Client Client
+		{
+			get {
+				if (serializing && !_Client.HasLoadedOrAssignedValue) {
+					return null;
+				}
+				return _Client.Entity;
+			}
+			set {
+				Client previousValue = _Client.Entity;
+				if ((previousValue != value) || (!_Client.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Client.Entity = null;
+						previousValue.Runs.Remove(this);
+					}
+					_Client.Entity = value;
+					if (value != null) {
+						value.Runs.Add(this);
+						_ClientId = value.Id;
+					}
+					else {
+						_ClientId = default(Guid);
+					}
+					SendPropertyChanged("Client");
+				}
+			}
+		}
+
+		private EntityRef<Experiment> _Experiment;
+		[Association(Name=@"Experiment_Run", Storage=@"_Experiment", ThisKey=@"ExperimentId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=11, EmitDefaultValue=false)]
+		public Experiment Experiment
+		{
+			get {
+				if (serializing && !_Experiment.HasLoadedOrAssignedValue) {
+					return null;
+				}
+				return _Experiment.Entity;
+			}
+			set {
+				Experiment previousValue = _Experiment.Entity;
+				if ((previousValue != value) || (!_Experiment.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Experiment.Entity = null;
+						previousValue.Runs.Remove(this);
+					}
+					_Experiment.Entity = value;
+					if (value != null) {
+						value.Runs.Add(this);
+						_ExperimentId = value.Id;
+					}
+					else {
+						_ExperimentId = default(int);
+					}
+					SendPropertyChanged("Experiment");
+				}
+			}
+		}
+
+		private EntityRef<User> _User;
+		[Association(Name=@"User_Run", Storage=@"_User", ThisKey=@"UserId", OtherKey=@"Id", IsForeignKey=true)]
+		[DataMember(Order=12, EmitDefaultValue=false)]
+		public User User
+		{
+			get {
+				if (serializing && !_User.HasLoadedOrAssignedValue) {
+					return null;
+				}
+				return _User.Entity;
+			}
+			set {
+				User previousValue = _User.Entity;
+				if ((previousValue != value) || (!_User.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_User.Entity = null;
+						previousValue.Runs.Remove(this);
+					}
+					_User.Entity = value;
+					if (value != null) {
+						value.Runs.Add(this);
+						_UserId = value.Id;
+					}
+					else {
+						_UserId = default(Guid);
+					}
+					SendPropertyChanged("User");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		private bool serializing;
+		
+		[OnSerializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerializing(StreamingContext context)
+		{
+			serializing = true;
+		}
+		
+		[OnSerialized()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerialized(StreamingContext context)
+		{
+			serializing = false;
+		}
+		
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.SolutionRepresentation")]
+[KnownType(typeof(SolutionRepresentation))]	public partial class SolutionRepresentation : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public SolutionRepresentation()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Problems = new EntitySet<Problem>(attach_Problems, detach_Problems);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnIdChanging(int value);
+		partial void OnIdChanged();
+		private int _Id;
+		[Column(Storage=@"_Id", AutoSync=AutoSync.OnInsert, DbType=@"Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int Id
+		{
+			get { return _Id; }
+			set {
+				if (_Id != value) {
+					OnIdChanging(value);
+					SendPropertyChanging();
+					_Id = value;
+					SendPropertyChanged("Id");
+					OnIdChanged();
+				}
+			}
+		}
+		
+		partial void OnNameChanging(string value);
+		partial void OnNameChanged();
+		private string _Name;
+		[Column(Storage=@"_Name", DbType=@"VarChar(200) NOT NULL", CanBeNull=false)]
+		[DataMember(Order=2)]
+		public string Name
+		{
+			get { return _Name; }
+			set {
+				if (_Name != value) {
+					OnNameChanging(value);
+					SendPropertyChanging();
+					_Name = value;
+					SendPropertyChanged("Name");
+					OnNameChanged();
+				}
+			}
+		}
+		
+		partial void OnDescriptionChanging(string value);
+		partial void OnDescriptionChanged();
+		private string _Description;
+		[Column(Storage=@"_Description", DbType=@"VarChar(MAX)")]
+		[DataMember(Order=3)]
+		public string Description
+		{
+			get { return _Description; }
+			set {
+				if (_Description != value) {
+					OnDescriptionChanging(value);
+					SendPropertyChanging();
+					_Description = value;
+					SendPropertyChanged("Description");
+					OnDescriptionChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntitySet<Problem> _Problems;
+		[Association(Name=@"SolutionRepresentation_Problem", Storage=@"_Problems", ThisKey=@"Id", OtherKey=@"SolutionRepresentationId")]
+		[DataMember(Order=4, EmitDefaultValue=false)]
+		public EntitySet<Problem> Problems
+		{
+			get {
+				if (serializing && !_Problems.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _Problems;
+			}
+			set {
+				_Problems.Assign(value);
+			}
+		}
+
+		private void attach_Problems(Problem entity)
+		{
+			SendPropertyChanging();
+			entity.SolutionRepresentation = this;
+		}
+		
+		private void detach_Problems(Problem entity)
+		{
+			SendPropertyChanging();
+			entity.SolutionRepresentation = null;
+		}
+		#endregion
+		
+		#region Serialization
+		private bool serializing;
+		
+		[OnSerializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerializing(StreamingContext context)
+		{
+			serializing = true;
+		}
+		
+		[OnSerialized()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerialized(StreamingContext context)
+		{
+			serializing = false;
+		}
+		
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.Algorithm")]
+[KnownType(typeof(Algorithm))]	public partial class Algorithm : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public Algorithm()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Algorithm_Parameters = new EntitySet<Algorithm_Parameter>(attach_Algorithm_Parameters, detach_Algorithm_Parameters);
+			_AlgorithmData = default(EntityRef<AlgorithmData>);
+			_Experiments = new EntitySet<Experiment>(attach_Experiments, detach_Experiments);
+			_Algorithm_Results = new EntitySet<Algorithm_Result>(attach_Algorithm_Results, detach_Algorithm_Results);
+			_AlgorithmClass = default(EntityRef<AlgorithmClass>);
+			_Platform = default(EntityRef<Platform>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnIdChanging(int value);
+		partial void OnIdChanged();
+		private int _Id;
+		[Column(Storage=@"_Id", AutoSync=AutoSync.OnInsert, DbType=@"Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int Id
+		{
+			get { return _Id; }
+			set {
+				if (_Id != value) {
+					OnIdChanging(value);
+					SendPropertyChanging();
+					_Id = value;
+					SendPropertyChanged("Id");
+					OnIdChanged();
+				}
+			}
+		}
+		
+		partial void OnAlgorithmClassIdChanging(int value);
+		partial void OnAlgorithmClassIdChanged();
+		private int _AlgorithmClassId;
+		[Column(Storage=@"_AlgorithmClassId", DbType=@"Int NOT NULL", CanBeNull=false)]
+		[DataMember(Order=2)]
+		public int AlgorithmClassId
+		{
+			get { return _AlgorithmClassId; }
+			set {
+				if (_AlgorithmClassId != value) {
+					if (_AlgorithmClass.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnAlgorithmClassIdChanging(value);
+					SendPropertyChanging();
+					_AlgorithmClassId = value;
+					SendPropertyChanged("AlgorithmClassId");
+					OnAlgorithmClassIdChanged();
+				}
+			}
+		}
+		
+		partial void OnPlatformIdChanging(int value);
+		partial void OnPlatformIdChanged();
+		private int _PlatformId;
+		[Column(Storage=@"_PlatformId", DbType=@"Int NOT NULL", CanBeNull=false)]
+		[DataMember(Order=3)]
+		public int PlatformId
+		{
+			get { return _PlatformId; }
+			set {
+				if (_PlatformId != value) {
+					if (_Platform.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnPlatformIdChanging(value);
+					SendPropertyChanging();
+					_PlatformId = value;
+					SendPropertyChanged("PlatformId");
+					OnPlatformIdChanged();
+				}
+			}
+		}
+		
+		partial void OnNameChanging(string value);
+		partial void OnNameChanged();
+		private string _Name;
+		[Column(Storage=@"_Name", DbType=@"VarChar(200) NOT NULL", CanBeNull=false)]
+		[DataMember(Order=4)]
+		public string Name
+		{
+			get { return _Name; }
+			set {
+				if (_Name != value) {
+					OnNameChanging(value);
+					SendPropertyChanging();
+					_Name = value;
+					SendPropertyChanged("Name");
+					OnNameChanged();
+				}
+			}
+		}
+		
+		partial void OnDescriptionChanging(string value);
+		partial void OnDescriptionChanged();
+		private string _Description;
+		[Column(Storage=@"_Description", DbType=@"VarChar(MAX)")]
+		[DataMember(Order=5)]
+		public string Description
+		{
+			get { return _Description; }
+			set {
+				if (_Description != value) {
+					OnDescriptionChanging(value);
+					SendPropertyChanging();
+					_Description = value;
+					SendPropertyChanged("Description");
+					OnDescriptionChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntitySet<Algorithm_Parameter> _Algorithm_Parameters;
+		[Association(Name=@"Algorithm_Algorithm_Parameter", Storage=@"_Algorithm_Parameters", ThisKey=@"Id", OtherKey=@"AlgorithmId")]
+		[DataMember(Order=6, EmitDefaultValue=false)]
+		public EntitySet<Algorithm_Parameter> Algorithm_Parameters
+		{
+			get {
+				if (serializing && !_Algorithm_Parameters.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _Algorithm_Parameters;
+			}
+			set {
+				_Algorithm_Parameters.Assign(value);
+			}
+		}
+
+		private void attach_Algorithm_Parameters(Algorithm_Parameter entity)
+		{
+			SendPropertyChanging();
+			entity.Algorithm = this;
+		}
+		
+		private void detach_Algorithm_Parameters(Algorithm_Parameter entity)
+		{
+			SendPropertyChanging();
+			entity.Algorithm = null;
+		}
+		private EntityRef<AlgorithmData> _AlgorithmData;
+		[Association(Name=@"Algorithm_AlgorithmData", Storage=@"_AlgorithmData", ThisKey=@"Id", OtherKey=@"AlgorithmId", IsUnique=true, IsForeignKey=false)]
+		[DataMember(Order=7, EmitDefaultValue=false)]
+		public AlgorithmData AlgorithmData
+		{
+			get {
+				if (serializing && !_AlgorithmData.HasLoadedOrAssignedValue) {
+					return null;
+				}
+				return _AlgorithmData.Entity;
+			}
+			set {
+				AlgorithmData previousValue = _AlgorithmData.Entity;
+				if ((previousValue != value) || (!_AlgorithmData.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_AlgorithmData.Entity = null;
+						previousValue.Algorithm = null;
+					}
+					_AlgorithmData.Entity = value;
+					if (value != null) {
+						value.Algorithm = this;
+					}
+					SendPropertyChanged("AlgorithmData");
+				}
+			}
+		}
+
+		private EntitySet<Experiment> _Experiments;
+		[Association(Name=@"Algorithm_Experiment", Storage=@"_Experiments", ThisKey=@"Id", OtherKey=@"AlgorithmId")]
+		[DataMember(Order=8, EmitDefaultValue=false)]
+		public EntitySet<Experiment> Experiments
+		{
+			get {
+				if (serializing && !_Experiments.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _Experiments;
+			}
+			set {
+				_Experiments.Assign(value);
+			}
+		}
+
+		private void attach_Experiments(Experiment entity)
+		{
+			SendPropertyChanging();
+			entity.Algorithm = this;
+		}
+		
+		private void detach_Experiments(Experiment entity)
+		{
+			SendPropertyChanging();
+			entity.Algorithm = null;
+		}
+		private EntitySet<Algorithm_Result> _Algorithm_Results;
+		[Association(Name=@"Algorithm_Algorithm_Result", Storage=@"_Algorithm_Results", ThisKey=@"Id", OtherKey=@"AlgorithmId")]
+		[DataMember(Order=9, EmitDefaultValue=false)]
+		public EntitySet<Algorithm_Result> Algorithm_Results
+		{
+			get {
+				if (serializing && !_Algorithm_Results.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _Algorithm_Results;
+			}
+			set {
+				_Algorithm_Results.Assign(value);
+			}
+		}
+
+		private void attach_Algorithm_Results(Algorithm_Result entity)
+		{
+			SendPropertyChanging();
+			entity.Algorithm = this;
+		}
+		
+		private void detach_Algorithm_Results(Algorithm_Result entity)
+		{
+			SendPropertyChanging();
+			entity.Algorithm = null;
+		}
+		private EntityRef<AlgorithmClass> _AlgorithmClass;
+		[Association(Name=@"AlgorithmClass_Algorithm", Storage=@"_AlgorithmClass", ThisKey=@"AlgorithmClassId", OtherKey=@"Id", IsForeignKey=true)]
+		[DataMember(Order=10, EmitDefaultValue=false)]
+		public AlgorithmClass AlgorithmClass
+		{
+			get {
+				if (serializing && !_AlgorithmClass.HasLoadedOrAssignedValue) {
+					return null;
+				}
+				return _AlgorithmClass.Entity;
+			}
+			set {
+				AlgorithmClass previousValue = _AlgorithmClass.Entity;
+				if ((previousValue != value) || (!_AlgorithmClass.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_AlgorithmClass.Entity = null;
+						previousValue.Algorithms.Remove(this);
+					}
+					_AlgorithmClass.Entity = value;
+					if (value != null) {
+						value.Algorithms.Add(this);
+						_AlgorithmClassId = value.Id;
+					}
+					else {
+						_AlgorithmClassId = default(int);
+					}
+					SendPropertyChanged("AlgorithmClass");
+				}
+			}
+		}
+
+		private EntityRef<Platform> _Platform;
+		[Association(Name=@"Platform_Algorithm", Storage=@"_Platform", ThisKey=@"PlatformId", OtherKey=@"Id", IsForeignKey=true)]
+		[DataMember(Order=11, EmitDefaultValue=false)]
+		public Platform Platform
+		{
+			get {
+				if (serializing && !_Platform.HasLoadedOrAssignedValue) {
+					return null;
+				}
+				return _Platform.Entity;
+			}
+			set {
+				Platform previousValue = _Platform.Entity;
+				if ((previousValue != value) || (!_Platform.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Platform.Entity = null;
+						previousValue.Algorithms.Remove(this);
+					}
+					_Platform.Entity = value;
+					if (value != null) {
+						value.Algorithms.Add(this);
+						_PlatformId = value.Id;
+					}
+					else {
+						_PlatformId = default(int);
+					}
+					SendPropertyChanged("Platform");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		private bool serializing;
+		
+		[OnSerializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerializing(StreamingContext context)
+		{
+			serializing = true;
+		}
+		
+		[OnSerialized()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerialized(StreamingContext context)
+		{
+			serializing = false;
+		}
+		
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.Algorithm_Result")]
+[KnownType(typeof(Algorithm_Result))]	public partial class Algorithm_Result : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public Algorithm_Result()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Algorithm = default(EntityRef<Algorithm>);
+			_Result = default(EntityRef<Result>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnAlgorithmIdChanging(int value);
+		partial void OnAlgorithmIdChanged();
+		private int _AlgorithmId;
+		[Column(Storage=@"_AlgorithmId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int AlgorithmId
+		{
+			get { return _AlgorithmId; }
+			set {
+				if (_AlgorithmId != value) {
+					if (_Algorithm.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnAlgorithmIdChanging(value);
+					SendPropertyChanging();
+					_AlgorithmId = value;
+					SendPropertyChanged("AlgorithmId");
+					OnAlgorithmIdChanged();
+				}
+			}
+		}
+		
+		partial void OnResultIdChanging(int value);
+		partial void OnResultIdChanged();
+		private int _ResultId;
+		[Column(Storage=@"_ResultId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=2)]
+		public int ResultId
+		{
+			get { return _ResultId; }
+			set {
+				if (_ResultId != value) {
+					if (_Result.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnResultIdChanging(value);
+					SendPropertyChanging();
+					_ResultId = value;
+					SendPropertyChanged("ResultId");
+					OnResultIdChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntityRef<Algorithm> _Algorithm;
+		[Association(Name=@"Algorithm_Algorithm_Result", Storage=@"_Algorithm", ThisKey=@"AlgorithmId", OtherKey=@"Id", IsForeignKey=true)]
+		[DataMember(Order=3, EmitDefaultValue=false)]
+		public Algorithm Algorithm
+		{
+			get {
+				return _Algorithm.Entity;
+			}
+			set {
+				Algorithm previousValue = _Algorithm.Entity;
+				if ((previousValue != value) || (!_Algorithm.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Algorithm.Entity = null;
+						previousValue.Algorithm_Results.Remove(this);
+					}
+					_Algorithm.Entity = value;
+					if (value != null) {
+						value.Algorithm_Results.Add(this);
+						_AlgorithmId = value.Id;
+					}
+					else {
+						_AlgorithmId = default(int);
+					}
+					SendPropertyChanged("Algorithm");
+				}
+			}
+		}
+
+		private EntityRef<Result> _Result;
+		[Association(Name=@"Result_Algorithm_Result", Storage=@"_Result", ThisKey=@"ResultId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=4, EmitDefaultValue=false)]
+		public Result Result
+		{
+			get {
+				return _Result.Entity;
+			}
+			set {
+				Result previousValue = _Result.Entity;
+				if ((previousValue != value) || (!_Result.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Result.Entity = null;
+						previousValue.Algorithm_Results.Remove(this);
+					}
+					_Result.Entity = value;
+					if (value != null) {
+						value.Algorithm_Results.Add(this);
+						_ResultId = value.Id;
+					}
+					else {
+						_ResultId = default(int);
+					}
+					SendPropertyChanged("Result");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.Result")]
+[KnownType(typeof(Result))]	public partial class Result : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public Result()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_BlobResultValues = new EntitySet<BlobResultValue>(attach_BlobResultValues, detach_BlobResultValues);
+			_CharResultValues = new EntitySet<CharResultValue>(attach_CharResultValues, detach_CharResultValues);
+			_FloatResultValues = new EntitySet<FloatResultValue>(attach_FloatResultValues, detach_FloatResultValues);
+			_IntResultValues = new EntitySet<IntResultValue>(attach_IntResultValues, detach_IntResultValues);
+			_Algorithm_Results = new EntitySet<Algorithm_Result>(attach_Algorithm_Results, detach_Algorithm_Results);
+			_DataType = default(EntityRef<DataType>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnIdChanging(int value);
+		partial void OnIdChanged();
+		private int _Id;
+		[Column(Storage=@"_Id", AutoSync=AutoSync.OnInsert, DbType=@"Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int Id
+		{
+			get { return _Id; }
+			set {
+				if (_Id != value) {
+					OnIdChanging(value);
+					SendPropertyChanging();
+					_Id = value;
+					SendPropertyChanged("Id");
+					OnIdChanged();
+				}
+			}
+		}
+		
+		partial void OnNameChanging(string value);
+		partial void OnNameChanged();
+		private string _Name;
+		[Column(Storage=@"_Name", DbType=@"VarChar(200) NOT NULL", CanBeNull=false)]
+		[DataMember(Order=2)]
+		public string Name
+		{
+			get { return _Name; }
+			set {
+				if (_Name != value) {
+					OnNameChanging(value);
+					SendPropertyChanging();
+					_Name = value;
+					SendPropertyChanged("Name");
+					OnNameChanged();
+				}
+			}
+		}
+		
+		partial void OnDescriptionChanging(string value);
+		partial void OnDescriptionChanged();
+		private string _Description;
+		[Column(Storage=@"_Description", DbType=@"VarChar(MAX)")]
+		[DataMember(Order=3)]
+		public string Description
+		{
+			get { return _Description; }
+			set {
+				if (_Description != value) {
+					OnDescriptionChanging(value);
+					SendPropertyChanging();
+					_Description = value;
+					SendPropertyChanged("Description");
+					OnDescriptionChanged();
+				}
+			}
+		}
+		
+		partial void OnDataTypeIdChanging(int value);
+		partial void OnDataTypeIdChanged();
+		private int _DataTypeId;
+		[Column(Storage=@"_DataTypeId", DbType=@"Int NOT NULL", CanBeNull=false)]
+		[DataMember(Order=4)]
+		public int DataTypeId
+		{
+			get { return _DataTypeId; }
+			set {
+				if (_DataTypeId != value) {
+					if (_DataType.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnDataTypeIdChanging(value);
+					SendPropertyChanging();
+					_DataTypeId = value;
+					SendPropertyChanged("DataTypeId");
+					OnDataTypeIdChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntitySet<BlobResultValue> _BlobResultValues;
+		[Association(Name=@"Result_BlobResultValue", Storage=@"_BlobResultValues", ThisKey=@"Id", OtherKey=@"ResultId")]
+		[DataMember(Order=5, EmitDefaultValue=false)]
+		public EntitySet<BlobResultValue> BlobResultValues
+		{
+			get {
+				if (serializing && !_BlobResultValues.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _BlobResultValues;
+			}
+			set {
+				_BlobResultValues.Assign(value);
+			}
+		}
+
+		private void attach_BlobResultValues(BlobResultValue entity)
+		{
+			SendPropertyChanging();
+			entity.Result = this;
+		}
+		
+		private void detach_BlobResultValues(BlobResultValue entity)
+		{
+			SendPropertyChanging();
+			entity.Result = null;
+		}
+		private EntitySet<CharResultValue> _CharResultValues;
+		[Association(Name=@"Result_CharResultValue", Storage=@"_CharResultValues", ThisKey=@"Id", OtherKey=@"ResultId")]
+		[DataMember(Order=6, EmitDefaultValue=false)]
+		public EntitySet<CharResultValue> CharResultValues
+		{
+			get {
+				if (serializing && !_CharResultValues.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _CharResultValues;
+			}
+			set {
+				_CharResultValues.Assign(value);
+			}
+		}
+
+		private void attach_CharResultValues(CharResultValue entity)
+		{
+			SendPropertyChanging();
+			entity.Result = this;
+		}
+		
+		private void detach_CharResultValues(CharResultValue entity)
+		{
+			SendPropertyChanging();
+			entity.Result = null;
+		}
+		private EntitySet<FloatResultValue> _FloatResultValues;
+		[Association(Name=@"Result_FloatResultValue", Storage=@"_FloatResultValues", ThisKey=@"Id", OtherKey=@"ResultId")]
+		[DataMember(Order=7, EmitDefaultValue=false)]
+		public EntitySet<FloatResultValue> FloatResultValues
+		{
+			get {
+				if (serializing && !_FloatResultValues.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _FloatResultValues;
+			}
+			set {
+				_FloatResultValues.Assign(value);
+			}
+		}
+
+		private void attach_FloatResultValues(FloatResultValue entity)
+		{
+			SendPropertyChanging();
+			entity.Result = this;
+		}
+		
+		private void detach_FloatResultValues(FloatResultValue entity)
+		{
+			SendPropertyChanging();
+			entity.Result = null;
+		}
+		private EntitySet<IntResultValue> _IntResultValues;
+		[Association(Name=@"Result_IntResultValue", Storage=@"_IntResultValues", ThisKey=@"Id", OtherKey=@"ResultId")]
+		[DataMember(Order=8, EmitDefaultValue=false)]
+		public EntitySet<IntResultValue> IntResultValues
+		{
+			get {
+				if (serializing && !_IntResultValues.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _IntResultValues;
+			}
+			set {
+				_IntResultValues.Assign(value);
+			}
+		}
+
+		private void attach_IntResultValues(IntResultValue entity)
+		{
+			SendPropertyChanging();
+			entity.Result = this;
+		}
+		
+		private void detach_IntResultValues(IntResultValue entity)
+		{
+			SendPropertyChanging();
+			entity.Result = null;
+		}
+		private EntitySet<Algorithm_Result> _Algorithm_Results;
+		[Association(Name=@"Result_Algorithm_Result", Storage=@"_Algorithm_Results", ThisKey=@"Id", OtherKey=@"ResultId")]
+		[DataMember(Order=9, EmitDefaultValue=false)]
+		public EntitySet<Algorithm_Result> Algorithm_Results
+		{
+			get {
+				if (serializing && !_Algorithm_Results.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _Algorithm_Results;
+			}
+			set {
+				_Algorithm_Results.Assign(value);
+			}
+		}
+
+		private void attach_Algorithm_Results(Algorithm_Result entity)
+		{
+			SendPropertyChanging();
+			entity.Result = this;
+		}
+		
+		private void detach_Algorithm_Results(Algorithm_Result entity)
+		{
+			SendPropertyChanging();
+			entity.Result = null;
+		}
+		private EntityRef<DataType> _DataType;
+		[Association(Name=@"DataType_Result", Storage=@"_DataType", ThisKey=@"DataTypeId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=10, EmitDefaultValue=false)]
+		public DataType DataType
+		{
+			get {
+				if (serializing && !_DataType.HasLoadedOrAssignedValue) {
+					return null;
+				}
+				return _DataType.Entity;
+			}
+			set {
+				DataType previousValue = _DataType.Entity;
+				if ((previousValue != value) || (!_DataType.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_DataType.Entity = null;
+						previousValue.Results.Remove(this);
+					}
+					_DataType.Entity = value;
+					if (value != null) {
+						value.Results.Add(this);
+						_DataTypeId = value.Id;
+					}
+					else {
+						_DataTypeId = default(int);
+					}
+					SendPropertyChanged("DataType");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		private bool serializing;
+		
+		[OnSerializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerializing(StreamingContext context)
+		{
+			serializing = true;
+		}
+		
+		[OnSerialized()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerialized(StreamingContext context)
+		{
+			serializing = false;
+		}
+		
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.OperatorParameterValue")]
+[KnownType(typeof(OperatorParameterValue))]	public partial class OperatorParameterValue : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public OperatorParameterValue()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_DataType = default(EntityRef<DataType>);
+			_Experiment = default(EntityRef<Experiment>);
+			_Parameter = default(EntityRef<Parameter>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnParameterIdChanging(int value);
+		partial void OnParameterIdChanged();
+		private int _ParameterId;
+		[Column(Storage=@"_ParameterId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int ParameterId
+		{
+			get { return _ParameterId; }
+			set {
+				if (_ParameterId != value) {
+					if (_Parameter.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnParameterIdChanging(value);
+					SendPropertyChanging();
+					_ParameterId = value;
+					SendPropertyChanged("ParameterId");
+					OnParameterIdChanged();
+				}
+			}
+		}
+		
+		partial void OnExperimentIdChanging(int value);
+		partial void OnExperimentIdChanged();
+		private int _ExperimentId;
+		[Column(Storage=@"_ExperimentId", DbType=@"Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=2)]
+		public int ExperimentId
+		{
+			get { return _ExperimentId; }
+			set {
+				if (_ExperimentId != value) {
+					if (_Experiment.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnExperimentIdChanging(value);
+					SendPropertyChanging();
+					_ExperimentId = value;
+					SendPropertyChanged("ExperimentId");
+					OnExperimentIdChanged();
+				}
+			}
+		}
+		
+		partial void OnValueChanging(Binary value);
+		partial void OnValueChanged();
+		private Binary _Value;
+		[Column(Storage=@"_Value", DbType=@"VarBinary(MAX) NOT NULL", CanBeNull=false, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=3)]
+		public Binary Value
+		{
+			get { return _Value; }
+			set {
+				if (_Value != value) {
+					OnValueChanging(value);
+					SendPropertyChanging();
+					_Value = value;
+					SendPropertyChanged("Value");
+					OnValueChanged();
+				}
+			}
+		}
+		
+		partial void OnDataTypeIdChanging(int value);
+		partial void OnDataTypeIdChanged();
+		private int _DataTypeId;
+		[Column(Storage=@"_DataTypeId", DbType=@"Int NOT NULL", CanBeNull=false)]
+		[DataMember(Order=4)]
+		public int DataTypeId
+		{
+			get { return _DataTypeId; }
+			set {
+				if (_DataTypeId != value) {
+					if (_DataType.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnDataTypeIdChanging(value);
+					SendPropertyChanging();
+					_DataTypeId = value;
+					SendPropertyChanged("DataTypeId");
+					OnDataTypeIdChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntityRef<DataType> _DataType;
+		[Association(Name=@"DataType_OperatorParameterValue", Storage=@"_DataType", ThisKey=@"DataTypeId", OtherKey=@"Id", IsForeignKey=true)]
+		[DataMember(Order=5, EmitDefaultValue=false)]
+		public DataType DataType
+		{
+			get {
+				return _DataType.Entity;
+			}
+			set {
+				DataType previousValue = _DataType.Entity;
+				if ((previousValue != value) || (!_DataType.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_DataType.Entity = null;
+						previousValue.OperatorParameterValues.Remove(this);
+					}
+					_DataType.Entity = value;
+					if (value != null) {
+						value.OperatorParameterValues.Add(this);
+						_DataTypeId = value.Id;
+					}
+					else {
+						_DataTypeId = default(int);
+					}
+					SendPropertyChanged("DataType");
+				}
+			}
+		}
+
+		private EntityRef<Experiment> _Experiment;
+		[Association(Name=@"Experiment_OperatorParameterValue", Storage=@"_Experiment", ThisKey=@"ExperimentId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=6, EmitDefaultValue=false)]
+		public Experiment Experiment
+		{
+			get {
+				return _Experiment.Entity;
+			}
+			set {
+				Experiment previousValue = _Experiment.Entity;
+				if ((previousValue != value) || (!_Experiment.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Experiment.Entity = null;
+						previousValue.OperatorParameterValues.Remove(this);
+					}
+					_Experiment.Entity = value;
+					if (value != null) {
+						value.OperatorParameterValues.Add(this);
+						_ExperimentId = value.Id;
+					}
+					else {
+						_ExperimentId = default(int);
+					}
+					SendPropertyChanged("Experiment");
+				}
+			}
+		}
+
+		private EntityRef<Parameter> _Parameter;
+		[Association(Name=@"Parameter_OperatorParameterValue", Storage=@"_Parameter", ThisKey=@"ParameterId", OtherKey=@"Id", IsForeignKey=true)]
+		[DataMember(Order=7, EmitDefaultValue=false)]
+		public Parameter Parameter
+		{
+			get {
+				return _Parameter.Entity;
+			}
+			set {
+				Parameter previousValue = _Parameter.Entity;
+				if ((previousValue != value) || (!_Parameter.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_Parameter.Entity = null;
+						previousValue.OperatorParameterValues.Remove(this);
+					}
+					_Parameter.Entity = value;
+					if (value != null) {
+						value.OperatorParameterValues.Add(this);
+						_ParameterId = value.Id;
+					}
+					else {
+						_ParameterId = default(int);
+					}
+					SendPropertyChanged("Parameter");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+
+namespace HeuristicLab.Services.OKB.DataAccess
+{	
+	[DataContract(IsReference=true)]
+	[Table(Name=@"dbo.Parameter")]
+[KnownType(typeof(Parameter))]	public partial class Parameter : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		public virtual void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		public virtual void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+		partial void OnCreated();
+		#endregion
+
+		#region Construction
+		public Parameter()
+		{
+			Initialize();
+		}
+		
+		private void Initialize()
+		{
+			_Algorithm_Parameters = new EntitySet<Algorithm_Parameter>(attach_Algorithm_Parameters, detach_Algorithm_Parameters);
+			_CharParameterValues = new EntitySet<CharParameterValue>(attach_CharParameterValues, detach_CharParameterValues);
+			_FloatParameterValues = new EntitySet<FloatParameterValue>(attach_FloatParameterValues, detach_FloatParameterValues);
+			_IntParameterValues = new EntitySet<IntParameterValue>(attach_IntParameterValues, detach_IntParameterValues);
+			_Problem_Parameters = new EntitySet<Problem_Parameter>(attach_Problem_Parameters, detach_Problem_Parameters);
+			_OperatorParameterValues = new EntitySet<OperatorParameterValue>(attach_OperatorParameterValues, detach_OperatorParameterValues);
+			_DataType = default(EntityRef<DataType>);
+			OnCreated();
+		}
+		#endregion
+
+		#region Column Mappings
+		partial void OnIdChanging(int value);
+		partial void OnIdChanged();
+		private int _Id;
+		[Column(Storage=@"_Id", AutoSync=AutoSync.OnInsert, DbType=@"Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true, UpdateCheck=UpdateCheck.Never)]
+		[DataMember(Order=1)]
+		public int Id
+		{
+			get { return _Id; }
+			set {
+				if (_Id != value) {
+					OnIdChanging(value);
+					SendPropertyChanging();
+					_Id = value;
+					SendPropertyChanged("Id");
+					OnIdChanged();
+				}
+			}
+		}
+		
+		partial void OnNameChanging(string value);
+		partial void OnNameChanged();
+		private string _Name;
+		[Column(Storage=@"_Name", DbType=@"VarChar(200) NOT NULL", CanBeNull=false)]
+		[DataMember(Order=2)]
+		public string Name
+		{
+			get { return _Name; }
+			set {
+				if (_Name != value) {
+					OnNameChanging(value);
+					SendPropertyChanging();
+					_Name = value;
+					SendPropertyChanged("Name");
+					OnNameChanged();
+				}
+			}
+		}
+		
+		partial void OnDescriptionChanging(string value);
+		partial void OnDescriptionChanged();
+		private string _Description;
+		[Column(Storage=@"_Description", DbType=@"VarChar(MAX)")]
+		[DataMember(Order=3)]
+		public string Description
+		{
+			get { return _Description; }
+			set {
+				if (_Description != value) {
+					OnDescriptionChanging(value);
+					SendPropertyChanging();
+					_Description = value;
+					SendPropertyChanged("Description");
+					OnDescriptionChanged();
+				}
+			}
+		}
+		
+		partial void OnDataTypeIdChanging(int value);
+		partial void OnDataTypeIdChanged();
+		private int _DataTypeId;
+		[Column(Storage=@"_DataTypeId", DbType=@"Int NOT NULL", CanBeNull=false)]
+		[DataMember(Order=4)]
+		public int DataTypeId
+		{
+			get { return _DataTypeId; }
+			set {
+				if (_DataTypeId != value) {
+					if (_DataType.HasLoadedOrAssignedValue) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+					OnDataTypeIdChanging(value);
+					SendPropertyChanging();
+					_DataTypeId = value;
+					SendPropertyChanged("DataTypeId");
+					OnDataTypeIdChanged();
+				}
+			}
+		}
+		
+		#endregion
+		
+		#region Associations
+		private EntitySet<Algorithm_Parameter> _Algorithm_Parameters;
+		[Association(Name=@"Parameter_Algorithm_Parameter", Storage=@"_Algorithm_Parameters", ThisKey=@"Id", OtherKey=@"ParameterId")]
+		[DataMember(Order=5, EmitDefaultValue=false)]
+		public EntitySet<Algorithm_Parameter> Algorithm_Parameters
+		{
+			get {
+				if (serializing && !_Algorithm_Parameters.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _Algorithm_Parameters;
+			}
+			set {
+				_Algorithm_Parameters.Assign(value);
+			}
+		}
+
+		private void attach_Algorithm_Parameters(Algorithm_Parameter entity)
+		{
+			SendPropertyChanging();
+			entity.Parameter = this;
+		}
+		
+		private void detach_Algorithm_Parameters(Algorithm_Parameter entity)
+		{
+			SendPropertyChanging();
+			entity.Parameter = null;
+		}
+		private EntitySet<CharParameterValue> _CharParameterValues;
+		[Association(Name=@"Parameter_CharParameterValue", Storage=@"_CharParameterValues", ThisKey=@"Id", OtherKey=@"ParameterId")]
+		[DataMember(Order=6, EmitDefaultValue=false)]
+		public EntitySet<CharParameterValue> CharParameterValues
+		{
+			get {
+				if (serializing && !_CharParameterValues.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _CharParameterValues;
+			}
+			set {
+				_CharParameterValues.Assign(value);
+			}
+		}
+
+		private void attach_CharParameterValues(CharParameterValue entity)
+		{
+			SendPropertyChanging();
+			entity.Parameter = this;
+		}
+		
+		private void detach_CharParameterValues(CharParameterValue entity)
+		{
+			SendPropertyChanging();
+			entity.Parameter = null;
+		}
+		private EntitySet<FloatParameterValue> _FloatParameterValues;
+		[Association(Name=@"Parameter_FloatParameterValue", Storage=@"_FloatParameterValues", ThisKey=@"Id", OtherKey=@"ParameterId")]
+		[DataMember(Order=7, EmitDefaultValue=false)]
+		public EntitySet<FloatParameterValue> FloatParameterValues
+		{
+			get {
+				if (serializing && !_FloatParameterValues.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _FloatParameterValues;
+			}
+			set {
+				_FloatParameterValues.Assign(value);
+			}
+		}
+
+		private void attach_FloatParameterValues(FloatParameterValue entity)
+		{
+			SendPropertyChanging();
+			entity.Parameter = this;
+		}
+		
+		private void detach_FloatParameterValues(FloatParameterValue entity)
+		{
+			SendPropertyChanging();
+			entity.Parameter = null;
+		}
+		private EntitySet<IntParameterValue> _IntParameterValues;
+		[Association(Name=@"Parameter_IntParameterValue", Storage=@"_IntParameterValues", ThisKey=@"Id", OtherKey=@"ParameterId")]
+		[DataMember(Order=8, EmitDefaultValue=false)]
+		public EntitySet<IntParameterValue> IntParameterValues
+		{
+			get {
+				if (serializing && !_IntParameterValues.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _IntParameterValues;
+			}
+			set {
+				_IntParameterValues.Assign(value);
+			}
+		}
+
+		private void attach_IntParameterValues(IntParameterValue entity)
+		{
+			SendPropertyChanging();
+			entity.Parameter = this;
+		}
+		
+		private void detach_IntParameterValues(IntParameterValue entity)
+		{
+			SendPropertyChanging();
+			entity.Parameter = null;
+		}
+		private EntitySet<Problem_Parameter> _Problem_Parameters;
+		[Association(Name=@"Parameter_Problem_Parameter", Storage=@"_Problem_Parameters", ThisKey=@"Id", OtherKey=@"ParameterId")]
+		[DataMember(Order=9, EmitDefaultValue=false)]
+		public EntitySet<Problem_Parameter> Problem_Parameters
+		{
+			get {
+				if (serializing && !_Problem_Parameters.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _Problem_Parameters;
+			}
+			set {
+				_Problem_Parameters.Assign(value);
+			}
+		}
+
+		private void attach_Problem_Parameters(Problem_Parameter entity)
+		{
+			SendPropertyChanging();
+			entity.Parameter = this;
+		}
+		
+		private void detach_Problem_Parameters(Problem_Parameter entity)
+		{
+			SendPropertyChanging();
+			entity.Parameter = null;
+		}
+		private EntitySet<OperatorParameterValue> _OperatorParameterValues;
+		[Association(Name=@"Parameter_OperatorParameterValue", Storage=@"_OperatorParameterValues", ThisKey=@"Id", OtherKey=@"ParameterId")]
+		[DataMember(Order=10, EmitDefaultValue=false)]
+		public EntitySet<OperatorParameterValue> OperatorParameterValues
+		{
+			get {
+				if (serializing && !_OperatorParameterValues.HasLoadedOrAssignedValues) {
+					return null;
+				}
+				return _OperatorParameterValues;
+			}
+			set {
+				_OperatorParameterValues.Assign(value);
+			}
+		}
+
+		private void attach_OperatorParameterValues(OperatorParameterValue entity)
+		{
+			SendPropertyChanging();
+			entity.Parameter = this;
+		}
+		
+		private void detach_OperatorParameterValues(OperatorParameterValue entity)
+		{
+			SendPropertyChanging();
+			entity.Parameter = null;
+		}
+		private EntityRef<DataType> _DataType;
+		[Association(Name=@"DataType_Parameter", Storage=@"_DataType", ThisKey=@"DataTypeId", OtherKey=@"Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule=@"CASCADE")]
+		[DataMember(Order=11, EmitDefaultValue=false)]
+		public DataType DataType
+		{
+			get {
+				if (serializing && !_DataType.HasLoadedOrAssignedValue) {
+					return null;
+				}
+				return _DataType.Entity;
+			}
+			set {
+				DataType previousValue = _DataType.Entity;
+				if ((previousValue != value) || (!_DataType.HasLoadedOrAssignedValue)) {
+					SendPropertyChanging();
+					if (previousValue != null) {
+						_DataType.Entity = null;
+						previousValue.Parameters.Remove(this);
+					}
+					_DataType.Entity = value;
+					if (value != null) {
+						value.Parameters.Add(this);
+						_DataTypeId = value.Id;
+					}
+					else {
+						_DataTypeId = default(int);
+					}
+					SendPropertyChanged("DataType");
+				}
+			}
+		}
+
+		#endregion
+		
+		#region Serialization
+		private bool serializing;
+		
+		[OnSerializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerializing(StreamingContext context)
+		{
+			serializing = true;
+		}
+		
+		[OnSerialized()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerialized(StreamingContext context)
+		{
+			serializing = false;
+		}
+		
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public  void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+	}
+}
+#pragma warning restore 1591
Index: trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/OKB.tt
===================================================================
--- trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/OKB.tt	(revision 4276)
+++ trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/OKB.tt	(revision 4276)
@@ -0,0 +1,488 @@
+﻿<# // L2ST4 - LINQ to SQL templates for T4 v0.82 - http://www.codeplex.com/l2st4
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+// This source code is made available under the terms of the Microsoft Public License (MS-PL)
+#><#@ template language="C#" hostspecific="True"
+#><#@ include file="L2ST4.ttinclude"
+#><#@ output extension=".generated.cs"
+#><# // Set options here
+var options = new {
+	DbmlFileName = Host.TemplateFile.Replace(".tt",".dbml"), // Which DBML file to operate on (same filename as template)
+	SerializeDataContractSP1 = true, // Emit SP1 DataContract serializer attributes
+	FilePerEntity = false, // Put each class into a separate file
+	StoredProcedureConcurrency = false, // Table updates via an SP require @@rowcount to be returned to enable concurrency
+	EntityFilePath = Path.GetDirectoryName(Host.TemplateFile) // Where to put the files	
+};
+var code = new CSharpCodeLanguage();
+var data = new Data(options.DbmlFileName);
+var manager = new Manager(Host, GenerationEnvironment, true) { OutputPath = options.EntityFilePath };
+data.ContextNamespace = (new string[] { manager.GetCustomToolNamespace(data.DbmlFileName), data.SpecifiedContextNamespace, manager.DefaultProjectNamespace }).FirstOrDefault(s => !String.IsNullOrEmpty(s));
+data.EntityNamespace = (new string[] { manager.GetCustomToolNamespace(data.DbmlFileName), data.SpecifiedEntityNamespace, manager.DefaultProjectNamespace }).FirstOrDefault(s => !String.IsNullOrEmpty(s));
+manager.StartHeader();
+#>#pragma warning disable 1591
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by LINQ to SQL template for T4 C#
+//     Generated at <#=DateTime.Now#>
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+using System;
+using System.ComponentModel;
+using System.Data.Linq;
+using System.Data.Linq.Mapping;
+<#if (data.Functions.Count > 0) {#>
+using System.Reflection;
+<#}
+string dataContractAttributes = (options.SerializeDataContractSP1) ? "IsReference=true" : "";
+if (data.Serialization) {#>
+using System.Runtime.Serialization;
+<#}#>
+
+<# manager.EndHeader();
+if(!String.IsNullOrEmpty(data.ContextNamespace)){#>
+namespace <#=data.ContextNamespace#>
+{
+<#}#>
+	[DatabaseAttribute(Name=@"<#=data.DatabaseName#>")]
+	<#=code.Format(data.TypeAttributes)#>partial class <#=data.ContextName#> : <#=data.BaseClassName#>
+	{
+		private static MappingSource mappingSource = new AttributeMappingSource();
+		
+		#region Extensibility Method Definitions
+		partial void OnCreated();
+<#	var tableOperations = new List<TableOperation>();
+	foreach(var table in data.Tables)
+		tableOperations.AddRange(table.Operations);
+	foreach(Table table in data.Tables)
+		foreach(OperationType operationType in Enum.GetValues(typeof(OperationType)))
+			if (!tableOperations.Any(o => (o.Table == table) && (o.Type == operationType))) {#>
+		partial void <#=operationType#><#=table.BaseClass.Name#>(<#=table.BaseClass.QualifiedName#> instance);
+<#}#>
+		#endregion
+		
+		#region Construction
+<#if (data.ConnectSettingsObject != null) {#>
+		public <#=data.ContextName#>() :
+			base(global::<#=data.ConnectSettingsObject#>.Default.<#=data.ConnectSettingsProperty#>, mappingSource)
+		{
+			OnCreated();
+		}
+<#}#>	
+		public <#=data.ContextName#>(string connection) :
+			base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public <#=data.ContextName#>(System.Data.IDbConnection connection) :
+			base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public <#=data.ContextName#>(string connection, MappingSource mappingSource) :
+			base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public <#=data.ContextName#>(System.Data.IDbConnection connection, MappingSource mappingSource) :
+			base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		#endregion
+<#if(data.Tables.Count > 0) {#>
+		
+		#region Tables
+<#	foreach(Table table in data.Tables) {
+#>		<#=code.GetAccess(table.BaseClass.TypeAttributes)#>Table<<#=table.BaseClass.QualifiedName#>> <#=table.Member#>
+		{
+			get { return GetTable<<#=table.BaseClass.QualifiedName#>>(); }
+		}
+		
+<#	}
+#>		#endregion
+<#}
+if (data.Functions.Count > 0) {#>
+		
+		#region Functions
+<#	foreach(Function function in data.Functions) {
+#>
+		[Function(Name=@"<#=function.Name#>"<#
+		if (function.IsComposable) {#>, IsComposable=true<#}
+		#>)]
+<#		if (function.Return != null && function.Return.DbType != null) {
+#>		[return: Parameter(DbType=@"<#=function.Return.DbType#>")]
+<#		}
+		if (function.HasMultipleResults) {
+			foreach(Class class1 in function.Classes) {#>
+		[ResultType(typeof(<#=class1.QualifiedName#>))]
+<#			}
+		}#>
+		<#=code.Format(function.MemberAttributes)#><#=code.Format(function.ReturnType)#> <#=function.Method#>(<#
+		foreach(Parameter parameter in function.Parameters) {#>
+
+					[Parameter(Name=@"<#=parameter.DbName#>", DbType=@"<#=parameter.DbType#>")] <#=code.Format(parameter.Direction)#><#=code.Format(parameter.Type)#> <#=parameter.Name#><#
+			if (parameter != function.Parameters.Last()) {#>,<# }
+		}
+		#>) {
+<#		foreach(Parameter outParameter in function.Parameters.Where(p => p.Direction == ParameterDirection.Out)) {#>
+			<#=outParameter.Name#> = default(<#=code.Format(outParameter.Type)#>);
+<#		}#>
+			IExecuteResult result = ExecuteMethodCall(this, (MethodInfo) MethodInfo.GetCurrentMethod()<#=String.Join("", function.Parameters.Select(p => ", " + p.Name).ToArray())#>);
+<#		int paramIdx = 0;
+		foreach(Parameter parameter in function.Parameters) {
+			if (parameter.Direction != ParameterDirection.In) {#>
+			<#=parameter.Name#> = (<#=code.Format(parameter.Type)#>) result.GetParameterValue(<#=paramIdx#>);
+<#			}
+			paramIdx++;
+		}
+#>			return (<#=code.Format(function.ReturnType)#>) result.ReturnValue;
+		}
+		
+<#	}#>
+		#endregion
+		
+<#	if (tableOperations.Count > 0) { #>
+		#region Table Operations
+<#		foreach(var operation in tableOperations) { #>
+		private void <#=operation.Type#><#=operation.Table.BaseClass.Name#>(<#=operation.Table.BaseClass.QualifiedName#> obj) {
+<#			if (operation.Arguments.Any(a => a.Version == ArgumentVersion.Original)) {
+#>			var original = <#=operation.Table.Member#>.GetOriginalEntityState(obj);
+<#			}
+			int paramIdx = 1;
+			foreach(var argument in operation.Arguments.Where(a => a.Parameter.Direction != ParameterDirection.In)) {
+#>			<#=code.Format(argument.Parameter.Type)#> p<#=paramIdx++#> = obj.<#=argument.Member#>;
+<#			}#>
+			<# if (options.StoredProcedureConcurrency) {#>var rowCount = <#}#><#=operation.Function.Method#>(<#
+			paramIdx = 1;
+			foreach(var argument in operation.Arguments) {
+				switch(argument.Parameter.Direction) {
+					case ParameterDirection.InOut: #>ref p<#=paramIdx++#><# break;
+					case ParameterDirection.Out: #>out p<#=paramIdx++#><# break;
+					default: #><#=(argument.Version == ArgumentVersion.New) ? "obj" : "original"#>.<#=argument.Member#><# break;
+				}
+			if (argument != operation.Arguments.Last()) {#>, <#}
+			}
+			#>);
+<#			if (options.StoredProcedureConcurrency) {#>
+			if (rowCount != 1) {
+				throw new ChangeConflictException();
+			}
+<#			}
+			paramIdx = 1;
+			foreach(var argument in operation.Arguments.Where(a => a.Parameter.Direction != ParameterDirection.In)) {
+#>			obj.<#=argument.Member#> = p<#=paramIdx++#>.GetValueOrDefault();
+<#			}#>
+		}
+		
+<#
+		}
+#>
+		#endregion
+<#	}
+}#>
+	}
+<#if (!String.IsNullOrEmpty(data.ContextNamespace)) {
+#>}
+<#}
+foreach(Table table in data.Tables) {
+	foreach(TableClass class1 in table.Classes) {
+		manager.StartBlock(Path.ChangeExtension(class1.Name,".generated.cs"));
+		if (!String.IsNullOrEmpty(data.EntityNamespace)) {#>
+
+namespace <#=data.EntityNamespace#>
+{	
+<#		}
+		if (data.Serialization && class1.IsSerializable) {
+#>	[DataContract(<#=dataContractAttributes#>)]
+<#		}
+		if (class1 == table.BaseClass) {#>
+	[Table(Name=@"<#=table.Name#>")]
+<#			foreach(TableClass subclass in data.TableClasses.Where(c => c.Table == table)) {
+				if (!String.IsNullOrEmpty(subclass.InheritanceCode)) {#>
+	[InheritanceMapping(Code=@"<#=subclass.InheritanceCode#>", Type=typeof(<#=subclass.Name#>)<# if (subclass.IsInheritanceDefault) {#>, IsDefault=true<#}#>)]
+<#				}
+				if (data.Serialization && subclass.IsSerializable) {#>[KnownType(typeof(<#=subclass.Name#>))]<#}
+			}
+#>	<#=code.Format(class1.TypeAttributes)#>partial class <#=class1.Name#> :<#if (!String.IsNullOrEmpty(data.EntityBase)) {#> <#=data.EntityBase#>, <#}#> INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		#region Property Change Event Handling
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		<#=code.Format(class1.PropertyChangeAccess)#>void SendPropertyChanging()
+		{
+			if (PropertyChanging != null) {
+				PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+			
+		<#=code.Format(class1.PropertyChangeAccess)#>void SendPropertyChanged(String propertyName)
+		{
+			if (PropertyChanged != null) {
+				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+		
+<#		} else {
+#>	<#=code.Format(class1.TypeAttributes)#>partial class <#=class1.Name#> : <#=class1.SuperClass.Name#>
+	{
+<#		}#>
+		#region Extensibility Method Definitions
+		partial void OnLoaded();
+		partial void OnValidate(ChangeAction action);
+<#		if (class1.HasPrimaryKey) {#>
+		partial void OnCreated();
+<#		}#>
+		#endregion
+
+		#region Construction
+		public <#=class1.Name#>()
+		{
+<#		if (data.Serialization) {
+#>			Initialize();
+		}
+		
+		private void Initialize()
+		{
+<#		}
+		foreach(Association association in class1.Associations) {
+#>			<#=association.Storage#> = <#
+			if (association.IsMany) {
+				#>new EntitySet<<#=association.Type.Name#>>(attach_<#=association.Member#>, detach_<#=association.Member#>);
+<#			} else {
+				#>default(EntityRef<<#=association.Type.Name#>>);
+<#			}
+		}
+		if (class1.HasPrimaryKey) {#>
+			OnCreated();
+<#		}#>
+		}
+		#endregion
+
+<#		int dataMemberIndex = 1;
+		if (class1.Columns.Count > 0) {
+#>		#region Column Mappings
+<#			foreach(Column column in class1.Columns) {#>
+		partial void On<#=column.Member#>Changing(<#=code.Format(column.Type)#> value);
+		partial void On<#=column.Member#>Changed();
+		private <#=code.Format(column.StorageType)#> <#=column.Storage#><# if (column.IsReadOnly) {#> = default(<#=code.Format(column.StorageType)#>)<#}#>;
+		[Column(Storage=@"<#=column.Storage#>"<#
+				if (column.Name != column.Member) {#>, Name=@"<#=column.Name#>"<#}
+				if (column.AutoSync != AutoSync.Default) {#>, AutoSync=AutoSync.<#=column.AutoSync.ToString()#><#}
+				if (!String.IsNullOrEmpty(column.DbType)) {#>, DbType=@"<#=column.DbType#>"<#}
+				if (column.IsPrimaryKey) {#>, IsPrimaryKey=true<#}
+				if (column.IsDiscriminator) {#>, IsDiscriminator=true<#}
+				if (column.IsDbGenerated) {#>, IsDbGenerated=true<#}
+				if (column.IsVersion) {#>, IsVersion=true<#}
+				if (!column.CanBeNull && !column.IsPrimaryKey) {#>, CanBeNull=false<#}
+				if (column.UpdateCheck != UpdateCheck.Always) {#>, UpdateCheck=UpdateCheck.<#=column.UpdateCheck.ToString()#><#}
+				if (!String.IsNullOrEmpty(column.Expression)) {#>, Expression=@"<#=column.Expression#>"<#}
+		#>)]
+<#				if (data.Serialization && ((column.MemberAttributes & MemberAttributes.AccessMask) == MemberAttributes.Public)) {
+#>		[DataMember(Order=<#=dataMemberIndex++#>)]
+<#				}
+#>		<#=code.Format(column.MemberAttributes)#><#=code.Format(column.Type)#> <#=column.Member#>
+		{
+			get { return <#=column.StorageValue#>; }
+<#				if (!column.IsReadOnly) { #>
+			set {
+				if (<#=column.StorageValue#> != value) {
+<#					if (column.ForeignKeyAssociations.Count > 0) {#>
+					if (<#=String.Join(" || ", column.ForeignKeyAssociations.Select(a => a.Storage + ".HasLoadedOrAssignedValue").ToArray())#>) {
+						throw new ForeignKeyReferenceAlreadyHasValueException();
+					}
+<#					}#>
+					On<#=column.Member#>Changing(value);
+					SendPropertyChanging();
+					<#=column.StorageValue#> = value;
+					SendPropertyChanged("<#=column.Member#>");
+					On<#=column.Member#>Changed();
+				}
+			}
+<#				}#>
+		}
+		
+<#			}#>
+		#endregion
+<#		}
+		bool needsSerializationFlag = class1.IsSerializable && class1.Associations.Any(a => !a.ManagesKeys);
+		if (class1.Associations.Count > 0) {
+#>		
+		#region Associations
+<#			foreach(Association association in class1.Associations) {#>
+		private Entity<#=(association.IsMany) ? "Set" : "Ref"#><<#=association.Type.Name#>> <#=association.Storage#>;
+		[Association(Name=@"<#=association.Name#>"<#
+			#>, Storage=@"<#=association.Storage#>"<#
+				if (association.ThisKeyMembers != null) {#>, ThisKey=@"<#=String.Join(",", association.ThisKeyMembers)#>"<#}
+				if (association.OtherKeyMembers != null) {#>, OtherKey=@"<#=String.Join(",", association.OtherKeyMembers)#>"<#}
+				if (association.IsForeignKey) {#>, IsForeignKey=true<#}
+				if (association.IsUnique) {#>, IsUnique=true, IsForeignKey=false<#}
+				if (association.DeleteOnNull) {#>, DeleteOnNull=true<#}
+				if (association.DeleteRule != null) {#>, DeleteRule=@"<#=association.DeleteRule #>"<#}
+		#>)]
+<#				bool serialization = association.IsSerializable && data.Serialization &&
+					(options.SerializeDataContractSP1 || !association.ManagesKeys);
+				if (serialization) {
+#>		[DataMember(Order=<#=dataMemberIndex++#>, EmitDefaultValue=false)]
+<#				}
+				if (!association.IsMany) {#>
+		<#=code.Format(association.MemberAttributes)#><#=association.Type.Name#> <#=association.Member#>
+		{
+			get {
+<#					if (needsSerializationFlag && serialization) {#>
+				if (serializing && !<#=association.Storage#>.HasLoadedOrAssignedValue) {
+					return null;
+				}
+<#					}#>
+				return <#=association.Storage#>.Entity;
+			}
+			set {
+				<#=association.Type.Name#> previousValue = <#=association.Storage#>.Entity;
+				if ((previousValue != value)<#if (association.OtherSide != null) {#> || (!<#=association.Storage#>.HasLoadedOrAssignedValue)<#}#>) {
+					SendPropertyChanging();
+<#					if (association.OtherSide != null) {#>
+					if (previousValue != null) {
+						<#=association.Storage#>.Entity = null;
+						previousValue.<#=association.OtherSide.Member#><#if (!association.OtherSide.IsMany) {#> = null<#} else {#>.Remove(this)<#}#>;
+					}
+<#					}
+#>					<#=association.Storage#>.Entity = value;
+<#					if (association.OtherSide != null) {#>
+					if (value != null) {
+						value.<#=association.OtherSide.Member#><#if (!association.OtherSide.IsMany) {#> = this<#} else {#>.Add(this)<#}#>;
+<#						if (association.ManagesKeys) {
+							for(int keyIdx=0;keyIdx<association.ThisKey.Count();keyIdx++) {#>
+						<#=association.ThisKey[keyIdx].Storage#> = value.<#=association.OtherKey[keyIdx].Member#>;
+<#							}#>
+					}
+					else {
+<#							for(int keyIdx=0;keyIdx<association.ThisKey.Count();keyIdx++) {
+#>						<#=association.ThisKey[keyIdx].Storage#> = default(<#=code.Format(association.ThisKey[keyIdx].Type)#>);
+<#							}
+						}
+#>					}
+<#					}#>
+					SendPropertyChanged("<#=association.Member#>");
+				}
+			}
+		}
+
+<#				} else {#>
+		<#=code.Format(association.MemberAttributes)#>EntitySet<<#=association.Type.Name#>> <#=association.Member#>
+		{
+			get {
+<#					if (needsSerializationFlag && serialization) {#>
+				if (serializing && !<#=association.Storage#>.HasLoadedOrAssignedValues) {
+					return null;
+				}
+<#					} #>
+				return <#=association.Storage#>;
+			}
+			set {
+				<#=association.Storage#>.Assign(value);
+			}
+		}
+
+		private void attach_<#=association.Member#>(<#=association.Type.Name#> entity)
+		{
+			SendPropertyChanging();
+			entity.<#=association.OtherSide.Member#> = this;
+		}
+		
+		private void detach_<#=association.Member#>(<#=association.Type.Name#> entity)
+		{
+			SendPropertyChanging();
+			entity.<#=association.OtherSide.Member#> = null;
+		}
+<#				}
+			}#>
+		#endregion
+<#		}
+		if (data.Serialization) {#>
+		
+		#region Serialization
+<#			if (needsSerializationFlag) {#>
+		private bool serializing;
+		
+		[OnSerializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerializing(StreamingContext context)
+		{
+			serializing = true;
+		}
+		
+		[OnSerialized()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public void OnSerialized(StreamingContext context)
+		{
+			serializing = false;
+		}
+		
+<#			}#>
+		[OnDeserializing()]
+		[EditorBrowsableAttribute(EditorBrowsableState.Never)]
+		public <#if (class1 != table.BaseClass) {#>new<#}#> void OnDeserializing(StreamingContext context)
+		{
+			Initialize();
+		}
+		#endregion
+<#		}
+#>	}
+<#		if (!String.IsNullOrEmpty(data.EntityNamespace)) {#>
+}
+<#		}
+		manager.EndBlock();
+	}
+}
+if (data.FunctionClasses.Count > 0) {
+	foreach(FunctionClass class1 in data.FunctionClasses) {
+		manager.StartBlock(Path.ChangeExtension(class1.Name,".generated.cs"));
+		if(!String.IsNullOrEmpty(data.EntityNamespace)){#>
+
+namespace <#=data.EntityNamespace#>
+{
+<#		}
+		if (data.Serialization) {
+#>	[DataContract(<#=dataContractAttributes#>)]
+<#		} #>
+	<#=code.Format(class1.TypeAttributes)#>partial class <#=class1.Name#>
+	{
+<#		int dataMemberIndex = 1;
+		foreach(Column column in class1.Columns) {#>
+		private <#=code.Format(column.Type)#> <#=column.Storage#>;
+		[Column(Storage=@"<#=column.Storage#>"<#
+				if (column.Name != column.Member) {#>, Name=@"<#=column.Name#>"<#}
+				if (!String.IsNullOrEmpty(column.DbType)) {#>, DbType=@"<#=column.DbType#>"<#}
+				if (!column.CanBeNull && !column.IsPrimaryKey) {#>, CanBeNull=false<#}
+		#>)]
+<#			if (data.Serialization && ((column.MemberAttributes & MemberAttributes.AccessMask) == MemberAttributes.Public)) {
+#>		[DataMember(Order=<#=dataMemberIndex++#>)]
+<#			}
+#>		<#=code.Format(column.MemberAttributes)#><#=code.Format(column.Type)#> <#=column.Member#> {
+			get { return <#=column.Storage#>; }
+			set {
+				if (<#=column.Storage#> != value) {
+					<#=column.Storage#> = value;
+				}
+			}
+		}
+<#		} #>
+	}
+<#		if (!String.IsNullOrEmpty(data.EntityNamespace)) {#>
+}
+<#		}
+		manager.EndBlock();
+	}
+}
+manager.StartFooter();#>
+#pragma warning restore 1591<#
+manager.EndFooter();
+manager.Process(options.FilePerEntity);#>
Index: trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/OKB_Methods.cs
===================================================================
--- trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/OKB_Methods.cs	(revision 4276)
+++ trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/OKB_Methods.cs	(revision 4276)
@@ -0,0 +1,478 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Data.Linq;
+using System.Linq;
+
+namespace HeuristicLab.Services.OKB.DataAccess {
+
+  #region TypeAbstraction
+  public interface IParameterValue {
+    int ParameterId { get; set; }
+    Parameter Parameter { get; set; }
+    int ExperimentId { get; set; }
+    Experiment Experiment { get; set; }
+    object Value { get; set; }
+  }
+  public partial class IntParameterValue : IParameterValue {
+    object IParameterValue.Value {
+      get { return this.Value; }
+      set { this.Value = (int)value; }
+    }
+  }
+  public partial class FloatParameterValue : IParameterValue {
+    object IParameterValue.Value {
+      get { return this.Value; }
+      set { this.Value = (double)value; }
+    }
+  }
+  public partial class CharParameterValue : IParameterValue {
+    object IParameterValue.Value {
+      get { return this.Value; }
+      set { this.Value = (string)value; }
+    }
+  }
+  public partial class OperatorParameterValue : IParameterValue {
+    object IParameterValue.Value {
+      get { return this.Value; }
+      set { this.Value = (Binary)value; }
+    }
+  }
+  public partial class Experiment {
+    public IQueryable<IParameterValue> ParameterValues {
+      get {
+        return IntParameterValues
+          .AsQueryable()
+          .Cast<IParameterValue>()
+          .Concat(FloatParameterValues.Cast<IParameterValue>())
+          .Concat(CharParameterValues.Cast<IParameterValue>())
+          .Concat(OperatorParameterValues.Cast<IParameterValue>());
+      }
+      set {
+        if (value == null) return;
+        foreach (IParameterValue pv in value) {
+          if (pv == null) continue;
+          if (pv is IntParameterValue) {
+            IntParameterValues.Add(new IntParameterValue() { ParameterId = pv.ParameterId, Value = (int)pv.Value });
+          } else if (pv is FloatParameterValue) {
+            FloatParameterValues.Add(new FloatParameterValue() { ParameterId = pv.ParameterId, Value = (double)pv.Value });
+          } else if (pv is CharParameterValue) {
+            CharParameterValues.Add(new CharParameterValue() { ParameterId = pv.ParameterId, Value = (string)pv.Value });
+          } else if (pv is OperatorParameterValue) {
+            OperatorParameterValues.Add(new OperatorParameterValue() {
+              ParameterId = pv.ParameterId,
+              Value = (Binary)pv.Value,
+              DataTypeId = ((OperatorParameterValue)pv).DataTypeId,
+            });
+          } else {
+            throw new ArgumentException("Invalid Parameter type" + pv.GetType());
+          }
+        }
+      }
+    }
+  }
+
+  public interface IResultValue {
+    int ResultId { get; set; }
+    Result Result { get; set; }
+    int RunId { get; set; }
+    Run Run { get; set; }
+    object Value { get; set; }
+  }
+  public partial class IntResultValue : IResultValue {
+    object IResultValue.Value {
+      get { return this.Value; }
+      set { this.Value = (int)value; }
+    }
+  }
+  public partial class FloatResultValue : IResultValue {
+    object IResultValue.Value {
+      get { return this.Value; }
+      set { this.Value = (double)value; }
+    }
+  }
+  public partial class CharResultValue : IResultValue {
+    object IResultValue.Value {
+      get { return this.Value; }
+      set { this.Value = (string)value; }
+    }
+  }
+  public partial class BlobResultValue : IResultValue {
+    object IResultValue.Value {
+      get { return this.Value; }
+      set { this.Value = (Binary)value; }
+    }
+  }
+  public partial class Run {
+    public IQueryable<IResultValue> ResultValues {
+      get {
+        return IntResultValues
+          .AsQueryable()
+          .Cast<IResultValue>()
+          .Concat(FloatResultValues.Cast<IResultValue>())
+          .Concat(CharResultValues.Cast<IResultValue>())
+          .Concat(BlobResultValues.Cast<IResultValue>());
+      }
+      set {
+        foreach (IResultValue rv in value) {
+          if (rv == null) continue;
+          if (rv is IntResultValue) {
+            IntResultValues.Add(new IntResultValue() { ResultId = rv.ResultId, Value = (int)rv.Value });
+          } else if (rv is FloatResultValue) {
+            FloatResultValues.Add(new FloatResultValue() { ResultId = rv.ResultId, Value = (double)rv.Value });
+          } else if (rv is CharResultValue) {
+            CharResultValues.Add(new CharResultValue() { ResultId = rv.ResultId, Value = (string)rv.Value });
+          } else if (rv is BlobResultValue) {
+            BlobResultValues.Add(new BlobResultValue() { ResultId = rv.ResultId, Value = (Binary)rv.Value });
+          } else {
+            throw new ArgumentException("Invalid result value type " + rv.GetType());
+          }
+        }
+      }
+    }
+  }
+  public partial class Result {
+    public IQueryable<IResultValue> ResultValues {
+      get {
+        return IntResultValues
+          .AsQueryable()
+          .Cast<IResultValue>()
+          .Concat(FloatResultValues.Cast<IResultValue>())
+          .Concat(CharResultValues.Cast<IResultValue>())
+          .Concat(BlobResultValues.Cast<IResultValue>());
+      }
+    }
+  }
+
+  public interface IProblemCharacteristicValue {
+    int ProblemId { get; set; }
+    Problem Problem { get; set; }
+    int ProblemCharacteristicId { get; set; }
+    ProblemCharacteristic ProblemCharacteristic { get; set; }
+    object Value { get; set; }
+  }
+  public partial class IntProblemCharacteristicValue : IProblemCharacteristicValue {
+    object IProblemCharacteristicValue.Value {
+      get { return this.Value; }
+      set { this.Value = (int)value; }
+    }
+  }
+  public partial class FloatProblemCharacteristicValue : IProblemCharacteristicValue {
+    object IProblemCharacteristicValue.Value {
+      get { return this.Value; }
+      set { this.Value = (double)value; }
+    }
+  }
+  public partial class CharProblemCharacteristicValue : IProblemCharacteristicValue {
+    object IProblemCharacteristicValue.Value {
+      get { return this.Value; }
+      set { this.Value = (string)value; }
+    }
+  }
+  public partial class Problem {
+    public IQueryable<IProblemCharacteristicValue> ProblemCharacteristicValues {
+      get {
+        return IntProblemCharacteristicValues
+          .AsQueryable()
+          .Cast<IProblemCharacteristicValue>()
+          .Concat(FloatProblemCharacteristicValues.Cast<IProblemCharacteristicValue>())
+          .Concat(CharProblemCharacteristicValues.Cast<IProblemCharacteristicValue>());
+      }
+    }
+  }
+  public partial class ProblemCharacteristic {
+    public IQueryable<IProblemCharacteristicValue> ProblemCharacteristicValues {
+      get {
+        return IntProblemCharacteristicValues
+          .AsQueryable()
+          .Cast<IProblemCharacteristicValue>()
+          .Concat(FloatProblemCharacteristicValues.Cast<IProblemCharacteristicValue>())
+          .Concat(CharProblemCharacteristicValues.Cast<IProblemCharacteristicValue>());
+      }
+    }
+  }
+  #endregion
+
+  #region Abuse entities to store parameter values for a single (not yet existing experiment)
+  public partial class Parameter {
+    public IParameterValue ParameterValue {
+      get {
+        try {
+          return IntParameterValues
+            .AsQueryable()
+            .Cast<IParameterValue>()
+            .Concat(FloatParameterValues.Cast<IParameterValue>())
+            .Concat(CharParameterValues.Cast<IParameterValue>())
+            .Concat(OperatorParameterValues.Cast<IParameterValue>())
+            .ToList().Single();
+        }
+        catch {
+          return null;
+        }
+      }
+      set {
+        if (value == ParameterValue) // access to ParameterValue ensures that there is a single value
+          return;
+        if (value == null)
+          throw new ArgumentNullException("ParameterValue");
+        IParameterValue oldValue = ParameterValue;
+        Type t = value.GetType();
+        if (oldValue.GetType() != t)
+          throw new ArgumentException("cannot assign value with different type");
+        if (t == typeof(IntParameterValue)) {
+          IntParameterValues.Clear();
+          IntParameterValues.Add((IntParameterValue)value);
+        } else if (t == typeof(FloatParameterValue)) {
+          FloatParameterValues.Clear();
+          FloatParameterValues.Add((FloatParameterValue)value);
+        } else if (t == typeof(CharParameterValue)) {
+          CharParameterValues.Clear();
+          CharParameterValues.Add((CharParameterValue)value);
+        } else if (t == typeof(OperatorParameterValue)) {
+          OperatorParameterValues.Clear();
+          OperatorParameterValues.Add((OperatorParameterValue)value);
+        } else throw new ArgumentException("invalid parameter value type " + t.Name);
+      }
+    }
+  }
+  public partial class Result {
+    public IResultValue ResultValue {
+      get {
+        try {
+          return IntResultValues
+            .AsQueryable()
+            .Cast<IResultValue>()
+            .Concat(FloatResultValues.Cast<IResultValue>())
+            .Concat(CharResultValues.Cast<IResultValue>())
+            .Concat(BlobResultValues.Cast<IResultValue>()).ToList().Single();
+        }
+        catch {
+          return null;
+        }
+      }
+      set {
+        if (value == ResultValue)
+          return;
+        if (value == null)
+          throw new ArgumentNullException("ResultValue");
+        IResultValue oldValue = ResultValue;
+        Type t = value.GetType();
+        if (oldValue.GetType() != t)
+          throw new ArgumentException("cannot assign value with different type");
+        if (t == typeof(IntResultValue)) {
+          IntResultValues.Clear();
+          IntResultValues.Add((IntResultValue)value);
+        } else if (t == typeof(FloatResultValue)) {
+          FloatResultValues.Clear();
+          FloatResultValues.Add((FloatResultValue)value);
+        } else if (t == typeof(CharResultValue)) {
+          CharResultValues.Clear();
+          CharResultValues.Add((CharResultValue)value);
+        } else if (t == typeof(BlobResultValue)) {
+          BlobResultValues.Clear();
+          BlobResultValues.Add((BlobResultValue)value);
+        } else throw new ArgumentException("invalid result value type " + t.Name);
+      }
+    }
+  }
+  public partial class Algorithm {
+    public IQueryable<Parameter> Parameters {
+      get {
+        return Algorithm_Parameters.AsQueryable().Select(ap => ap.Parameter);
+      }
+    }
+    public IQueryable<IntParameterValue> IntParameterValues {
+      get {
+        return Parameters.AsQueryable()
+          .Where(p => p.IntParameterValues.Count > 0)
+          .Select(p => p.IntParameterValues.Single());
+      }
+    }
+    public IQueryable<FloatParameterValue> FloatParameterValues {
+      get {
+        return Parameters.AsQueryable()
+          .Where(p => p.FloatParameterValues.Count > 0)
+          .Select(p => p.FloatParameterValues.Single());
+      }
+    }
+    public IQueryable<CharParameterValue> CharParameterValues {
+      get {
+        return Parameters.AsQueryable()
+          .Where(p => p.CharParameterValues.Count > 0)
+          .Select(p => p.CharParameterValues.Single());
+      }
+    }
+    public IQueryable<OperatorParameterValue> OperatorParameterValues {
+      get {
+        return Parameters.AsQueryable()
+          .Where(p => p.OperatorParameterValues.Count > 0)
+          .Select(p => p.OperatorParameterValues.Single());
+      }
+    }
+    public IQueryable<IParameterValue> ParameterValues {
+      get {
+        return Parameters.AsQueryable().Select(p => p.ParameterValue);
+      }
+    }
+
+    public IQueryable<Result> Results {
+      get {
+        return Algorithm_Results.AsQueryable().Select(ar => ar.Result);
+      }
+    }
+    public IQueryable<IntResultValue> IntResultValues {
+      get {
+        return Results.AsQueryable()
+          .Where(r => r.IntResultValues.Count > 0)
+          .Select(r => r.IntResultValues.Single());
+      }
+    }
+    public IQueryable<FloatResultValue> FloatResultValues {
+      get {
+        return Results.AsQueryable()
+          .Where(r => r.FloatResultValues.Count > 0)
+          .Select(r => r.FloatResultValues.Single());
+      }
+    }
+    public IQueryable<CharResultValue> CharResultValues {
+      get {
+
+        return Results.AsQueryable()
+          .Where(r => r.CharResultValues.Count > 0)
+          .Select(r => r.CharResultValues.Single());
+      }
+    }
+    public IQueryable<BlobResultValue> BlobResultValues {
+      get {
+        return Results.AsQueryable()
+          .Where(r => r.BlobResultValues.Count > 0)
+          .Select(r => r.BlobResultValues.Single());
+      }
+    }
+    public IQueryable<IResultValue> ResultValues {
+      get {
+        return Results.AsQueryable().Select(r => r.ResultValue);
+      }
+    }
+  }
+  #endregion
+
+  #region Type access
+  public partial class DataType {
+    public Type Type {
+      get {
+        return Type.GetType(ClrName, false) ?? typeof(object);
+      }
+    }
+  }
+  #endregion
+
+  #region NamedEntities
+  public interface INamedEntity {
+    int Id { get; }
+    string Name { get; }
+    string Description { get; }
+  }
+  public partial class AlgorithmClass : INamedEntity { }
+  public partial class Algorithm : INamedEntity { }
+  public partial class ProblemClass : INamedEntity { }
+  public partial class Problem : INamedEntity { }
+  public partial class SolutionRepresentation : INamedEntity { }
+  public partial class ProblemCharacteristic : INamedEntity { }
+  public partial class Parameter : INamedEntity { }
+  public partial class Result : INamedEntity { }
+  public partial class Project : INamedEntity { }
+  public partial class Platform : INamedValue { }
+  #endregion
+
+  #region DataTypes
+  public interface IIntValue {
+    int Value { get; }
+  }
+  public partial class IntResultValue : IIntValue { }
+  public partial class IntParameterValue : IIntValue { }
+  public partial class IntProblemCharacteristicValue : IIntValue { }
+  public interface IFloatValue {
+    double Value { get; }
+  }
+  public partial class FloatResultValue : IFloatValue { }
+  public partial class FloatParameterValue : IFloatValue { }
+  public partial class FloatProblemCharacteristicValue : IFloatValue { }
+  public interface ICharValue {
+    string Value { get; }
+  }
+  public partial class CharResultValue : ICharValue { }
+  public partial class CharParameterValue : ICharValue { }
+  public partial class CharProblemCharacteristicValue : ICharValue { }
+  #endregion
+
+  #region NamedValues
+  public interface INamedValue {
+    string Name { get; }
+  }
+  public interface IValue<T> : INamedValue {
+    T Value { get; }
+  }
+  public partial class IntResultValue : IValue<int> {
+    public string Name { get { return Result.Name; } }
+  }
+  public partial class FloatResultValue : IValue<double> {
+    public string Name { get { return Result.Name; } }
+  }
+  public partial class CharResultValue : IValue<string> {
+    public string Name { get { return Result.Name; } }
+  }
+  public partial class BlobResultValue : IValue<Binary> {
+    public string Name { get { return Result.Name; } }
+  }
+  public partial class IntParameterValue : IValue<int> {
+    public string Name { get { return Parameter.Name; } }
+  }
+  public partial class FloatParameterValue : IValue<double> {
+    public string Name { get { return Parameter.Name; } }
+  }
+  public partial class CharParameterValue : IValue<string> {
+    public string Name { get { return Parameter.Name; } }
+  }
+  public partial class OperatorParameterValue : IValue<Binary> {
+    public string Name { get { return Parameter.Name; } }
+  }
+  public partial class IntProblemCharacteristicValue : IValue<int> {
+    public string Name { get { return ProblemCharacteristic.Name; } }
+  }
+  public partial class FloatProblemCharacteristicValue : IValue<double> {
+    public string Name { get { return ProblemCharacteristic.Name; } }
+  }
+  public partial class CharProblemCharacteristicValue : IValue<string> {
+    public string Name { get { return ProblemCharacteristic.Name; } }
+  }
+  #endregion
+
+  #region DynamicTypeInformation
+  public interface IDynamicParent : INamedEntity {
+    DataType DataType { get; }
+  }
+  public partial class ProblemCharacteristic : IDynamicParent { }
+  public partial class Parameter : IDynamicParent { }
+  public partial class Result : IDynamicParent { }
+  #endregion
+}
Index: trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/Properties/AssemblyInfo.frame
===================================================================
--- trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/Properties/AssemblyInfo.frame	(revision 4276)
+++ trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/Properties/AssemblyInfo.frame	(revision 4276)
@@ -0,0 +1,57 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Services.OKB.DataAccess")]
+[assembly: AssemblyDescription("Data access layer for HeuristicLab OKB service")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2010 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components.  If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("8a145a17-ce73-47da-b520-b4194835fb49")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.3.0.0")]
+[assembly: AssemblyFileVersion("3.3.0.$WCREV$")]
Index: trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/Properties/Settings.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/Properties/Settings.Designer.cs	(revision 4276)
+++ trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/Properties/Settings.Designer.cs	(revision 4276)
@@ -0,0 +1,36 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.1
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Services.OKB.DataAccess.Properties {
+    
+    
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+        
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+        
+        public static Settings Default {
+            get {
+                return defaultInstance;
+            }
+        }
+        
+        [global::System.Configuration.ApplicationScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]
+        [global::System.Configuration.DefaultSettingValueAttribute("Data Source=localhost;Initial Catalog=OKB;Integrated Security=True")]
+        public string OKBConnectionString {
+            get {
+                return ((string)(this["OKBConnectionString"]));
+            }
+        }
+    }
+}
Index: trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/Properties/Settings.settings
===================================================================
--- trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/Properties/Settings.settings	(revision 4276)
+++ trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/Properties/Settings.settings	(revision 4276)
@@ -0,0 +1,14 @@
+﻿<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="HeuristicLab.OKB.DataStore.Properties" GeneratedClassName="Settings">
+  <Profiles />
+  <Settings>
+    <Setting Name="OKBConnectionString" Type="(Connection string)" Scope="Application">
+      <DesignTimeValue Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
+&lt;SerializableConnectionString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
+  &lt;ConnectionString&gt;Data Source=localhost;Initial Catalog=OKB;Integrated Security=True&lt;/ConnectionString&gt;
+  &lt;ProviderName&gt;System.Data.SqlClient&lt;/ProviderName&gt;
+&lt;/SerializableConnectionString&gt;</DesignTimeValue>
+      <Value Profile="(Default)">Data Source=localhost;Initial Catalog=OKB;Integrated Security=True</Value>
+    </Setting>
+  </Settings>
+</SettingsFile>
Index: trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/app.config
===================================================================
--- trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/app.config	(revision 4276)
+++ trunk/sources/HeuristicLab.Services.OKB.DataAccess/3.3/app.config	(revision 4276)
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<configuration>
+  <configSections>
+  </configSections>
+  <connectionStrings>
+    <add name="HeuristicLab.OKB.DataStore.Properties.Settings.OKBConnectionString" connectionString="Data Source=localhost;Initial Catalog=OKB;Integrated Security=True" providerName="System.Data.SqlClient"/>
+  </connectionStrings>
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
