Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB.DataAccess/3.3/OKB.dbml
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB.DataAccess/3.3/OKB.dbml	(revision 5394)
+++ branches/OKB (trunk integration)/HeuristicLab.Services.OKB.DataAccess/3.3/OKB.dbml	(revision 5397)
@@ -50,4 +50,5 @@
       <Association Name="DataType_Problem" Member="Problems" ThisKey="Id" OtherKey="DataTypeId" Type="Problem" />
       <Association Name="DataType_Value" Member="Values" ThisKey="Id" OtherKey="DataTypeId" Type="Value" />
+      <Association Name="DataType_CharacteristicValue" Member="CharacteristicValues" ThisKey="Id" OtherKey="DataTypeId" Type="CharacteristicValue" />
       <Association Name="Platform_DataType" Member="Platform" ThisKey="PlatformId" OtherKey="Id" Type="Platform" IsForeignKey="true" />
     </Type>
@@ -90,4 +91,5 @@
       <Association Name="Problem_ProblemUser" Member="ProblemUsers" ThisKey="Id" OtherKey="ProblemId" Type="ProblemUser" />
       <Association Name="Problem_Run" Member="Runs" ThisKey="Id" OtherKey="ProblemId" Type="Run" />
+      <Association Name="Problem_CharacteristicValue" Member="CharacteristicValues" ThisKey="Id" OtherKey="ProblemId" Type="CharacteristicValue" />
       <Association Name="DataType_Problem" Member="DataType" ThisKey="DataTypeId" OtherKey="Id" Type="DataType" IsForeignKey="true" />
       <Association Name="Platform_Problem" Member="Platform" ThisKey="PlatformId" OtherKey="Id" Type="Platform" IsForeignKey="true" />
@@ -139,3 +141,28 @@
     </Type>
   </Table>
+  <Table Name="dbo.Characteristic" Member="Characteristics">
+    <Type Name="Characteristic">
+      <Column Name="Id" Type="System.Int64" DbType="BigInt NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Column Name="Name" Type="System.String" DbType="NVarChar(200) NOT NULL" CanBeNull="false" />
+      <Column Name="Type" Type="System.Byte" DbType="TinyInt NOT NULL" CanBeNull="false" />
+      <Association Name="Characteristic_CharacteristicValue" Member="CharacteristicValues" ThisKey="Id" OtherKey="CharacteristicId" Type="CharacteristicValue" />
+    </Type>
+  </Table>
+  <Table Name="dbo.CharacteristicValue" Member="CharacteristicValues">
+    <Type Name="CharacteristicValue">
+      <Column Name="Id" Type="System.Int64" DbType="BigInt NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Column Name="ProblemId" Type="System.Int64" DbType="BigInt NOT NULL" CanBeNull="false" />
+      <Column Name="CharacteristicId" Type="System.Int64" DbType="BigInt NOT NULL" CanBeNull="false" />
+      <Column Name="DataTypeId" Type="System.Int64" DbType="BigInt NOT NULL" CanBeNull="false" />
+      <Column Name="BoolValue" Type="System.Boolean" DbType="Bit" CanBeNull="true" />
+      <Column Name="IntValue" Type="System.Int32" DbType="Int" CanBeNull="true" />
+      <Column Name="LongValue" Type="System.Int64" DbType="BigInt" CanBeNull="true" />
+      <Column Name="FloatValue" Type="System.Single" DbType="Real" CanBeNull="true" />
+      <Column Name="DoubleValue" Type="System.Double" DbType="Float" CanBeNull="true" />
+      <Column Name="StringValue" Type="System.String" DbType="NVarChar(MAX)" CanBeNull="true" />
+      <Association Name="Characteristic_CharacteristicValue" Member="Characteristic" ThisKey="CharacteristicId" OtherKey="Id" Type="Characteristic" IsForeignKey="true" />
+      <Association Name="DataType_CharacteristicValue" Member="DataType" ThisKey="DataTypeId" OtherKey="Id" Type="DataType" IsForeignKey="true" />
+      <Association Name="Problem_CharacteristicValue" Member="Problem" ThisKey="ProblemId" OtherKey="Id" Type="Problem" IsForeignKey="true" />
+    </Type>
+  </Table>
 </Database>
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB.DataAccess/3.3/OKB.dbml.layout
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB.DataAccess/3.3/OKB.dbml.layout	(revision 5394)
+++ branches/OKB (trunk integration)/HeuristicLab.Services.OKB.DataAccess/3.3/OKB.dbml.layout	(revision 5397)
@@ -1,43 +1,43 @@
 ﻿<?xml version="1.0" encoding="utf-8"?>
-<ordesignerObjectsDiagram dslVersion="1.0.0.0" absoluteBounds="0, 0, 12, 13.25" name="OKB">
+<ordesignerObjectsDiagram dslVersion="1.0.0.0" absoluteBounds="0, 0, 15.75, 11.25" name="OKB">
   <DataContextMoniker Name="/OKBDataContext" />
   <nestedChildShapes>
-    <classShape Id="ec288562-8ef9-46b8-a2dc-a471fec7afb8" absoluteBounds="0.75, 0.5, 2, 1.3862939453125">
+    <classShape Id="ec288562-8ef9-46b8-a2dc-a471fec7afb8" absoluteBounds="0.5, 0.5, 2, 1.3862939453125">
       <DataClassMoniker Name="/OKBDataContext/AlgorithmClass" />
       <nestedChildShapes>
-        <elementListCompartment Id="fbed452c-662c-42d5-b89f-2b122b63aecc" absoluteBounds="0.76500000000000012, 0.96, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
-      </nestedChildShapes>
-    </classShape>
-    <classShape Id="018aceac-7bd0-4fdd-8cca-d219aa08a5b5" absoluteBounds="9.75, 0.5, 2, 1.3862939453125">
+        <elementListCompartment Id="fbed452c-662c-42d5-b89f-2b122b63aecc" absoluteBounds="0.51500000000000012, 0.96, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="018aceac-7bd0-4fdd-8cca-d219aa08a5b5" absoluteBounds="13.5, 0.5, 2, 1.3862939453125">
       <DataClassMoniker Name="/OKBDataContext/ProblemClass" />
       <nestedChildShapes>
-        <elementListCompartment Id="2958536f-012b-4eb7-8bc7-453edcda1493" absoluteBounds="9.765, 0.96, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
-      </nestedChildShapes>
-    </classShape>
-    <classShape Id="aa997e47-0162-4fc2-aa8d-e237c50c46fe" isExpanded="false" absoluteBounds="0.75, 2.125, 2, 0.45">
+        <elementListCompartment Id="2958536f-012b-4eb7-8bc7-453edcda1493" absoluteBounds="13.515, 0.96, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="aa997e47-0162-4fc2-aa8d-e237c50c46fe" isExpanded="false" absoluteBounds="0.5, 2.125, 2, 0.45">
       <DataClassMoniker Name="/OKBDataContext/AlgorithmUser" />
       <nestedChildShapes>
-        <elementListCompartment Id="f81c31a9-84c5-40b1-b817-6dccbe77227d" absoluteBounds="0.76500000000000057, 2.5850000000000009, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
-      </nestedChildShapes>
-    </classShape>
-    <classShape Id="8d911be4-13c4-4abd-85de-4f93f280dd50" isExpanded="false" absoluteBounds="9.75, 2.125, 2, 0.45">
+        <elementListCompartment Id="f81c31a9-84c5-40b1-b817-6dccbe77227d" absoluteBounds="0.51500000000000057, 2.5850000000000009, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="8d911be4-13c4-4abd-85de-4f93f280dd50" isExpanded="false" absoluteBounds="13.5, 2.125, 2, 0.45">
       <DataClassMoniker Name="/OKBDataContext/ProblemUser" />
       <nestedChildShapes>
-        <elementListCompartment Id="bdf4bd9d-405f-4582-99ff-036459c86748" absoluteBounds="9.765, 2.5850000000000009, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
-      </nestedChildShapes>
-    </classShape>
-    <classShape Id="42a9e8c0-3168-43f0-a31f-54d1558bd4c2" absoluteBounds="5.25, 0.5, 2, 1.3862939453125">
+        <elementListCompartment Id="bdf4bd9d-405f-4582-99ff-036459c86748" absoluteBounds="13.515, 2.5850000000000009, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="42a9e8c0-3168-43f0-a31f-54d1558bd4c2" absoluteBounds="7, 0.5, 2, 1.3862939453125">
       <DataClassMoniker Name="/OKBDataContext/Platform" />
       <nestedChildShapes>
-        <elementListCompartment Id="83ab4fa2-80aa-4c36-9596-bc4d9a0c6daf" absoluteBounds="5.2650000000000006, 0.96, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
-      </nestedChildShapes>
-    </classShape>
-    <classShape Id="34f5a12b-f109-4606-baf8-6ddfde7c1b34" absoluteBounds="5.25, 2.125, 2, 1.5785953776041666">
+        <elementListCompartment Id="83ab4fa2-80aa-4c36-9596-bc4d9a0c6daf" absoluteBounds="7.0150000000000006, 0.96, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="34f5a12b-f109-4606-baf8-6ddfde7c1b34" absoluteBounds="7, 2.125, 2, 1.5785953776041666">
       <DataClassMoniker Name="/OKBDataContext/DataType" />
       <nestedChildShapes>
-        <elementListCompartment Id="1dacac40-e283-48e9-a98d-dddbc6b4fd48" absoluteBounds="5.2650000000000006, 2.585, 1.9700000000000002, 1.0185953776041665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
-      </nestedChildShapes>
-    </classShape>
-    <associationConnector edgePoints="[(6.25 : 1.8862939453125); (6.25 : 2.125)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+        <elementListCompartment Id="1dacac40-e283-48e9-a98d-dddbc6b4fd48" absoluteBounds="7.0150000000000006, 2.585, 1.9700000000000002, 1.0185953776041665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(8 : 1.8862939453125); (8 : 2.125)]" fixedFrom="Algorithm" fixedTo="Algorithm">
       <AssociationMoniker Name="/OKBDataContext/Platform/Platform_DataType" />
       <nodes>
@@ -46,17 +46,17 @@
       </nodes>
     </associationConnector>
-    <classShape Id="c75911bf-ae6d-421c-9219-e027c3059390" absoluteBounds="6.25, 7.25, 2, 1.5785953776041666">
+    <classShape Id="c75911bf-ae6d-421c-9219-e027c3059390" absoluteBounds="3.5, 4, 2, 1.5785953776041666">
       <DataClassMoniker Name="/OKBDataContext/ValueName" />
       <nestedChildShapes>
-        <elementListCompartment Id="5aadda7d-ee09-475a-a2d1-e153615911b4" absoluteBounds="6.265, 7.71, 1.9700000000000002, 1.0185953776041665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
-      </nestedChildShapes>
-    </classShape>
-    <classShape Id="be37de9e-465a-4d06-9dd6-3c3f7f1f07fa" absoluteBounds="3, 0.5, 2, 2.1554996744791666">
+        <elementListCompartment Id="5aadda7d-ee09-475a-a2d1-e153615911b4" absoluteBounds="3.5149999999999997, 4.46, 1.9700000000000002, 1.0185953776041665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="be37de9e-465a-4d06-9dd6-3c3f7f1f07fa" absoluteBounds="2.75, 0.5, 2, 2.1554996744791666">
       <DataClassMoniker Name="/OKBDataContext/Algorithm" />
       <nestedChildShapes>
-        <elementListCompartment Id="5d0e5084-c74f-469d-bb56-da81ce2ce8d4" absoluteBounds="3.015, 0.96, 1.9700000000000002, 1.5954996744791665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
-      </nestedChildShapes>
-    </classShape>
-    <associationConnector edgePoints="[(3 : 2.35); (2.75 : 2.35)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+        <elementListCompartment Id="5d0e5084-c74f-469d-bb56-da81ce2ce8d4" absoluteBounds="2.7650000000000006, 0.96, 1.9700000000000002, 1.5954996744791665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(2.75 : 2.35); (2.5 : 2.35)]" fixedFrom="Algorithm" fixedTo="Algorithm">
       <AssociationMoniker Name="/OKBDataContext/Algorithm/Algorithm_AlgorithmUser" />
       <nodes>
@@ -65,5 +65,5 @@
       </nodes>
     </associationConnector>
-    <associationConnector edgePoints="[(2.75 : 1.19314697265625); (3 : 1.19314697265625)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+    <associationConnector edgePoints="[(2.5 : 1.19314697265625); (2.75 : 1.19314697265625)]" fixedFrom="Algorithm" fixedTo="Algorithm">
       <AssociationMoniker Name="/OKBDataContext/AlgorithmClass/AlgorithmClass_Algorithm" />
       <nodes>
@@ -72,5 +72,5 @@
       </nodes>
     </associationConnector>
-    <associationConnector edgePoints="[(5.25 : 2.39024983723958); (5 : 2.39024983723958)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+    <associationConnector edgePoints="[(7 : 2.39024983723958); (4.75 : 2.39024983723958)]" fixedFrom="Algorithm" fixedTo="Algorithm">
       <AssociationMoniker Name="/OKBDataContext/DataType/DataType_Algorithm" />
       <nodes>
@@ -79,5 +79,5 @@
       </nodes>
     </associationConnector>
-    <associationConnector edgePoints="[(5.25 : 1.19314697265625); (5 : 1.19314697265625)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+    <associationConnector edgePoints="[(7 : 1.19314697265625); (4.75 : 1.19314697265625)]" fixedFrom="Algorithm" fixedTo="Algorithm">
       <AssociationMoniker Name="/OKBDataContext/Platform/Platform_Algorithm" />
       <nodes>
@@ -86,11 +86,11 @@
       </nodes>
     </associationConnector>
-    <classShape Id="f197afc9-8f2b-4dae-b87e-43c2c87796bb" absoluteBounds="7.5, 0.5, 2, 2.1554996744791666">
+    <classShape Id="f197afc9-8f2b-4dae-b87e-43c2c87796bb" absoluteBounds="11.25, 0.5, 2, 2.1554996744791666">
       <DataClassMoniker Name="/OKBDataContext/Problem" />
       <nestedChildShapes>
-        <elementListCompartment Id="9feb3034-0748-47df-aa82-41b7c3e8cdbd" absoluteBounds="7.5150000000000006, 0.96, 1.9700000000000002, 1.5954996744791665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
-      </nestedChildShapes>
-    </classShape>
-    <associationConnector edgePoints="[(9.5 : 2.35); (9.75 : 2.35)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+        <elementListCompartment Id="9feb3034-0748-47df-aa82-41b7c3e8cdbd" absoluteBounds="11.265, 0.96, 1.9700000000000002, 1.5954996744791665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(13.25 : 2.35); (13.5 : 2.35)]" fixedFrom="Algorithm" fixedTo="Algorithm">
       <AssociationMoniker Name="/OKBDataContext/Problem/Problem_ProblemUser" />
       <nodes>
@@ -99,5 +99,5 @@
       </nodes>
     </associationConnector>
-    <associationConnector edgePoints="[(7.25 : 2.39024983723958); (7.5 : 2.39024983723958)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+    <associationConnector edgePoints="[(9 : 2.39024983723958); (11.25 : 2.39024983723958)]" fixedFrom="Algorithm" fixedTo="Algorithm">
       <AssociationMoniker Name="/OKBDataContext/DataType/DataType_Problem" />
       <nodes>
@@ -106,5 +106,5 @@
       </nodes>
     </associationConnector>
-    <associationConnector edgePoints="[(7.25 : 1.19314697265625); (7.5 : 1.19314697265625)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+    <associationConnector edgePoints="[(9 : 1.19314697265625); (11.25 : 1.19314697265625)]" fixedFrom="Algorithm" fixedTo="Algorithm">
       <AssociationMoniker Name="/OKBDataContext/Platform/Platform_Problem" />
       <nodes>
@@ -113,5 +113,5 @@
       </nodes>
     </associationConnector>
-    <associationConnector edgePoints="[(9.75 : 1.19314697265625); (9.5 : 1.19314697265625)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+    <associationConnector edgePoints="[(13.5 : 1.19314697265625); (13.25 : 1.19314697265625)]" fixedFrom="Algorithm" fixedTo="Algorithm">
       <AssociationMoniker Name="/OKBDataContext/ProblemClass/ProblemClass_Problem" />
       <nodes>
@@ -120,11 +120,11 @@
       </nodes>
     </associationConnector>
-    <classShape Id="c2a69525-596c-4c58-a8cb-cb8c616f52d1" absoluteBounds="5.375, 11.625, 2, 1.3862939453125">
+    <classShape Id="c2a69525-596c-4c58-a8cb-cb8c616f52d1" absoluteBounds="7, 9.625, 2, 1.3862939453125">
       <DataClassMoniker Name="/OKBDataContext/BinaryData" />
       <nestedChildShapes>
-        <elementListCompartment Id="d8ba4b42-b034-4f4d-88c6-ccc998db2567" absoluteBounds="5.39, 12.085, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
-      </nestedChildShapes>
-    </classShape>
-    <associationConnector edgePoints="[(5.375 : 12.5842332275421); (3.49119721701854 : 12.5842332275421); (3.49119721701854 : 2.65549967447917)]" fixedFrom="Caller" fixedTo="Caller">
+        <elementListCompartment Id="d8ba4b42-b034-4f4d-88c6-ccc998db2567" absoluteBounds="7.0150000000000006, 10.085, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(7 : 10.3182703039497); (3.05835246852252 : 10.3182703039497); (3.05835246852252 : 2.65549967447917)]" fixedFrom="Caller" fixedTo="Caller">
       <AssociationMoniker Name="/OKBDataContext/BinaryData/BinaryData_Algorithm" />
       <nodes>
@@ -133,5 +133,5 @@
       </nodes>
     </associationConnector>
-    <associationConnector edgePoints="[(7.375 : 12.3181469726562); (9.03188819701693 : 12.3181469726562); (9.03188819701693 : 2.65549967447917)]" fixedFrom="Algorithm" fixedTo="Caller">
+    <associationConnector edgePoints="[(9 : 10.3181469726562); (12.9275860029676 : 10.3181469726562); (12.9275860029676 : 2.65549967447917)]" fixedFrom="Algorithm" fixedTo="Caller">
       <AssociationMoniker Name="/OKBDataContext/BinaryData/BinaryData_Problem" />
       <nodes>
@@ -140,11 +140,11 @@
       </nodes>
     </associationConnector>
-    <classShape Id="65934fe9-4206-4d20-971b-1afacf645311" absoluteBounds="5.375, 9.125, 2, 2.1554996744791666">
+    <classShape Id="65934fe9-4206-4d20-971b-1afacf645311" absoluteBounds="5.75, 7.25, 2, 2.1554996744791666">
       <DataClassMoniker Name="/OKBDataContext/Run" />
       <nestedChildShapes>
-        <elementListCompartment Id="14f0104d-03c2-4aec-9a4d-faeaaa1d8947" absoluteBounds="5.3900000000000006, 9.585, 1.9700000000000002, 1.5954996744791665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
-      </nestedChildShapes>
-    </classShape>
-    <associationConnector edgePoints="[(3.83227639170838 : 2.65549967447917); (3.83227639170838 : 10.1875); (4.6605991084703 : 10.1875 : JumpStart); (4.82726577513696 : 10.1875 : JumpEnd); (5.375 : 10.1875)]" fixedFrom="Caller" fixedTo="Algorithm">
+        <elementListCompartment Id="14f0104d-03c2-4aec-9a4d-faeaaa1d8947" absoluteBounds="5.7650000000000006, 7.7100000000000009, 1.9700000000000002, 1.5954996744791665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(3.27917873426126 : 2.65549967447917); (3.27917873426126 : 8.32774983723958); (5.75 : 8.32774983723958)]" fixedFrom="Algorithm" fixedTo="Algorithm">
       <AssociationMoniker Name="/OKBDataContext/Algorithm/Algorithm_Run" />
       <nodes>
@@ -153,5 +153,5 @@
       </nodes>
     </associationConnector>
-    <associationConnector edgePoints="[(8.67740328851453 : 2.65549967447917); (8.67740328851453 : 10.2027498372396); (7.375 : 10.2027498372396)]" fixedFrom="Caller" fixedTo="Algorithm">
+    <associationConnector edgePoints="[(12.7137905014838 : 2.65549967447917); (12.7137905014838 : 8.32774983723958); (8.13243692318721 : 8.32774983723958 : JumpStart); (7.96577025652055 : 8.32774983723958 : JumpEnd); (7.75 : 8.32774983723958)]" fixedFrom="Algorithm" fixedTo="Algorithm">
       <AssociationMoniker Name="/OKBDataContext/Problem/Problem_Run" />
       <nodes>
@@ -160,11 +160,11 @@
       </nodes>
     </associationConnector>
-    <classShape Id="7d592fcd-d7a9-4ad0-a69f-9d29b97d9995" absoluteBounds="5.25, 4, 2, 2.9247054036458331">
+    <classShape Id="7d592fcd-d7a9-4ad0-a69f-9d29b97d9995" absoluteBounds="5.75, 4, 2, 2.9247054036458331">
       <DataClassMoniker Name="/OKBDataContext/Value" />
       <nestedChildShapes>
-        <elementListCompartment Id="89ad14d6-7946-43fe-af7c-59ce9fbe1d96" absoluteBounds="5.2650000000000006, 4.46, 1.9700000000000002, 2.364705403645833" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
-      </nestedChildShapes>
-    </classShape>
-    <associationConnector edgePoints="[(5.375 : 12.0896030581781); (4.74393244180363 : 12.0896030581781); (4.74393244180363 : 5.49806911725718); (5.25 : 5.49806911725718)]" manuallyRouted="true" fixedFrom="Caller" fixedTo="Caller">
+        <elementListCompartment Id="89ad14d6-7946-43fe-af7c-59ce9fbe1d96" absoluteBounds="5.7650000000000006, 4.46, 1.9700000000000002, 2.364705403645833" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(8.04910358985388 : 9.625); (8.04910358985388 : 5.45496831242535); (7.75 : 5.45496831242535)]" manuallyRouted="true" fixedFrom="Caller" fixedTo="Caller">
       <AssociationMoniker Name="/OKBDataContext/BinaryData/BinaryData_Value" />
       <nodes>
@@ -173,5 +173,5 @@
       </nodes>
     </associationConnector>
-    <associationConnector edgePoints="[(6.25 : 3.70359537760417); (6.25 : 4)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+    <associationConnector edgePoints="[(7 : 3.07568669800201); (6.6959048132675 : 3.07568669800201); (6.6959048132675 : 4)]" fixedFrom="Caller" fixedTo="Caller">
       <AssociationMoniker Name="/OKBDataContext/DataType/DataType_Value" />
       <nodes>
@@ -180,5 +180,5 @@
       </nodes>
     </associationConnector>
-    <associationConnector edgePoints="[(5.78125 : 9.125); (5.78125 : 6.92470540364583)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+    <associationConnector edgePoints="[(6.72310950465391 : 7.25); (6.72027766059957 : 6.92470540364583)]" manuallyRouted="true" fixedFrom="Caller" fixedTo="Caller">
       <AssociationMoniker Name="/OKBDataContext/Run/Run_Value" />
       <nodes>
@@ -187,9 +187,42 @@
       </nodes>
     </associationConnector>
-    <associationConnector edgePoints="[(6.75 : 7.25); (6.75 : 6.92470540364583)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+    <associationConnector edgePoints="[(5.5 : 4.78929768880208); (5.75 : 4.78929768880208)]" fixedFrom="Algorithm" fixedTo="Algorithm">
       <AssociationMoniker Name="/OKBDataContext/ValueName/ValueName_Value" />
       <nodes>
         <classShapeMoniker Id="c75911bf-ae6d-421c-9219-e027c3059390" />
         <classShapeMoniker Id="7d592fcd-d7a9-4ad0-a69f-9d29b97d9995" />
+      </nodes>
+    </associationConnector>
+    <classShape Id="7fb3c838-3d13-4b45-9912-1b5733a61110" absoluteBounds="10.5, 4, 2, 1.3862939453125">
+      <DataClassMoniker Name="/OKBDataContext/Characteristic" />
+      <nestedChildShapes>
+        <elementListCompartment Id="861faa11-366e-46d5-8fcb-1cef297d1920" absoluteBounds="10.515, 4.46, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="78f1d8c1-299d-46f8-90b5-e79d3904a0e6" absoluteBounds="8.25, 4, 2, 2.7324039713541666">
+      <DataClassMoniker Name="/OKBDataContext/CharacteristicValue" />
+      <nestedChildShapes>
+        <elementListCompartment Id="c197bfb3-c90d-42e4-91a8-17775b4cc933" absoluteBounds="8.265, 4.46, 1.9700000000000002, 2.1724039713541665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(10.5 : 4.69314697265625); (10.25 : 4.69314697265625)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+      <AssociationMoniker Name="/OKBDataContext/Characteristic/Characteristic_CharacteristicValue" />
+      <nodes>
+        <classShapeMoniker Id="7fb3c838-3d13-4b45-9912-1b5733a61110" />
+        <classShapeMoniker Id="78f1d8c1-299d-46f8-90b5-e79d3904a0e6" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(9 : 3.05278498857512); (9.24152226977744 : 3.05278498857512); (9.24152226977744 : 4)]" fixedFrom="Caller" fixedTo="Caller">
+      <AssociationMoniker Name="/OKBDataContext/DataType/DataType_CharacteristicValue" />
+      <nodes>
+        <classShapeMoniker Id="34f5a12b-f109-4606-baf8-6ddfde7c1b34" />
+        <classShapeMoniker Id="78f1d8c1-299d-46f8-90b5-e79d3904a0e6" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(11.8118610455891 : 2.65549967447917); (11.8118610455891 : 3.0432292702094); (9.62689159819655 : 3.0432292702094); (9.62689159819655 : 4)]" manuallyRouted="true" fixedFrom="Caller" fixedTo="Caller">
+      <AssociationMoniker Name="/OKBDataContext/Problem/Problem_CharacteristicValue" />
+      <nodes>
+        <classShapeMoniker Id="f197afc9-8f2b-4dae-b87e-43c2c87796bb" />
+        <classShapeMoniker Id="78f1d8c1-299d-46f8-90b5-e79d3904a0e6" />
       </nodes>
     </associationConnector>
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB.DataAccess/3.3/OKB.designer.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB.DataAccess/3.3/OKB.designer.cs	(revision 5394)
+++ branches/OKB (trunk integration)/HeuristicLab.Services.OKB.DataAccess/3.3/OKB.designer.cs	(revision 5397)
@@ -67,4 +67,10 @@
     partial void UpdateValue(Value instance);
     partial void DeleteValue(Value instance);
+    partial void InsertCharacteristic(Characteristic instance);
+    partial void UpdateCharacteristic(Characteristic instance);
+    partial void DeleteCharacteristic(Characteristic instance);
+    partial void InsertCharacteristicValue(CharacteristicValue instance);
+    partial void UpdateCharacteristicValue(CharacteristicValue instance);
+    partial void DeleteCharacteristicValue(CharacteristicValue instance);
     #endregion
 		
@@ -192,4 +198,20 @@
 			{
 				return this.GetTable<Value>();
+			}
+		}
+		
+		public System.Data.Linq.Table<Characteristic> Characteristics
+		{
+			get
+			{
+				return this.GetTable<Characteristic>();
+			}
+		}
+		
+		public System.Data.Linq.Table<CharacteristicValue> CharacteristicValues
+		{
+			get
+			{
+				return this.GetTable<CharacteristicValue>();
 			}
 		}
@@ -939,4 +961,6 @@
 		
 		private EntitySet<Value> _Values;
+		
+		private EntitySet<CharacteristicValue> _CharacteristicValues;
 		
 		private EntityRef<Platform> _Platform;
@@ -961,4 +985,5 @@
 			this._Problems = new EntitySet<Problem>(new Action<Problem>(this.attach_Problems), new Action<Problem>(this.detach_Problems));
 			this._Values = new EntitySet<Value>(new Action<Value>(this.attach_Values), new Action<Value>(this.detach_Values));
+			this._CharacteristicValues = new EntitySet<CharacteristicValue>(new Action<CharacteristicValue>(this.attach_CharacteristicValues), new Action<CharacteristicValue>(this.detach_CharacteristicValues));
 			this._Platform = default(EntityRef<Platform>);
 			OnCreated();
@@ -1088,4 +1113,17 @@
 		}
 		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="DataType_CharacteristicValue", Storage="_CharacteristicValues", ThisKey="Id", OtherKey="DataTypeId")]
+		public EntitySet<CharacteristicValue> CharacteristicValues
+		{
+			get
+			{
+				return this._CharacteristicValues;
+			}
+			set
+			{
+				this._CharacteristicValues.Assign(value);
+			}
+		}
+		
 		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Platform_DataType", Storage="_Platform", ThisKey="PlatformId", OtherKey="Id", IsForeignKey=true)]
 		public Platform Platform
@@ -1173,4 +1211,16 @@
 		
 		private void detach_Values(Value entity)
+		{
+			this.SendPropertyChanging();
+			entity.DataType = null;
+		}
+		
+		private void attach_CharacteristicValues(CharacteristicValue entity)
+		{
+			this.SendPropertyChanging();
+			entity.DataType = this;
+		}
+		
+		private void detach_CharacteristicValues(CharacteristicValue entity)
 		{
 			this.SendPropertyChanging();
@@ -1791,4 +1841,6 @@
 		private EntitySet<Run> _Runs;
 		
+		private EntitySet<CharacteristicValue> _CharacteristicValues;
+		
 		private EntityRef<DataType> _DataType;
 		
@@ -1823,4 +1875,5 @@
 			this._ProblemUsers = new EntitySet<ProblemUser>(new Action<ProblemUser>(this.attach_ProblemUsers), new Action<ProblemUser>(this.detach_ProblemUsers));
 			this._Runs = new EntitySet<Run>(new Action<Run>(this.attach_Runs), new Action<Run>(this.detach_Runs));
+			this._CharacteristicValues = new EntitySet<CharacteristicValue>(new Action<CharacteristicValue>(this.attach_CharacteristicValues), new Action<CharacteristicValue>(this.detach_CharacteristicValues));
 			this._DataType = default(EntityRef<DataType>);
 			this._Platform = default(EntityRef<Platform>);
@@ -2012,4 +2065,17 @@
 		}
 		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Problem_CharacteristicValue", Storage="_CharacteristicValues", ThisKey="Id", OtherKey="ProblemId")]
+		public EntitySet<CharacteristicValue> CharacteristicValues
+		{
+			get
+			{
+				return this._CharacteristicValues;
+			}
+			set
+			{
+				this._CharacteristicValues.Assign(value);
+			}
+		}
+		
 		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="DataType_Problem", Storage="_DataType", ThisKey="DataTypeId", OtherKey="Id", IsForeignKey=true)]
 		public DataType DataType
@@ -2187,4 +2253,16 @@
 		
 		private void detach_Runs(Run entity)
+		{
+			this.SendPropertyChanging();
+			entity.Problem = null;
+		}
+		
+		private void attach_CharacteristicValues(CharacteristicValue entity)
+		{
+			this.SendPropertyChanging();
+			entity.Problem = this;
+		}
+		
+		private void detach_CharacteristicValues(CharacteristicValue entity)
 		{
 			this.SendPropertyChanging();
@@ -3168,4 +3246,543 @@
 		}
 	}
+	
+	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Characteristic")]
+	public partial class Characteristic : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private long _Id;
+		
+		private string _Name;
+		
+		private byte _Type;
+		
+		private EntitySet<CharacteristicValue> _CharacteristicValues;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnIdChanging(long value);
+    partial void OnIdChanged();
+    partial void OnNameChanging(string value);
+    partial void OnNameChanged();
+    partial void OnTypeChanging(byte value);
+    partial void OnTypeChanged();
+    #endregion
+		
+		public Characteristic()
+		{
+			this._CharacteristicValues = new EntitySet<CharacteristicValue>(new Action<CharacteristicValue>(this.attach_CharacteristicValues), new Action<CharacteristicValue>(this.detach_CharacteristicValues));
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="BigInt NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
+		public long Id
+		{
+			get
+			{
+				return this._Id;
+			}
+			set
+			{
+				if ((this._Id != value))
+				{
+					this.OnIdChanging(value);
+					this.SendPropertyChanging();
+					this._Id = value;
+					this.SendPropertyChanged("Id");
+					this.OnIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="NVarChar(200) NOT NULL", CanBeNull=false)]
+		public string Name
+		{
+			get
+			{
+				return this._Name;
+			}
+			set
+			{
+				if ((this._Name != value))
+				{
+					this.OnNameChanging(value);
+					this.SendPropertyChanging();
+					this._Name = value;
+					this.SendPropertyChanged("Name");
+					this.OnNameChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Type", DbType="TinyInt NOT NULL")]
+		public byte Type
+		{
+			get
+			{
+				return this._Type;
+			}
+			set
+			{
+				if ((this._Type != value))
+				{
+					this.OnTypeChanging(value);
+					this.SendPropertyChanging();
+					this._Type = value;
+					this.SendPropertyChanged("Type");
+					this.OnTypeChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Characteristic_CharacteristicValue", Storage="_CharacteristicValues", ThisKey="Id", OtherKey="CharacteristicId")]
+		public EntitySet<CharacteristicValue> CharacteristicValues
+		{
+			get
+			{
+				return this._CharacteristicValues;
+			}
+			set
+			{
+				this._CharacteristicValues.Assign(value);
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		
+		private void attach_CharacteristicValues(CharacteristicValue entity)
+		{
+			this.SendPropertyChanging();
+			entity.Characteristic = this;
+		}
+		
+		private void detach_CharacteristicValues(CharacteristicValue entity)
+		{
+			this.SendPropertyChanging();
+			entity.Characteristic = null;
+		}
+	}
+	
+	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.CharacteristicValue")]
+	public partial class CharacteristicValue : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private long _Id;
+		
+		private long _ProblemId;
+		
+		private long _CharacteristicId;
+		
+		private long _DataTypeId;
+		
+		private System.Nullable<bool> _BoolValue;
+		
+		private System.Nullable<int> _IntValue;
+		
+		private System.Nullable<long> _LongValue;
+		
+		private System.Nullable<float> _FloatValue;
+		
+		private System.Nullable<double> _DoubleValue;
+		
+		private string _StringValue;
+		
+		private EntityRef<Characteristic> _Characteristic;
+		
+		private EntityRef<DataType> _DataType;
+		
+		private EntityRef<Problem> _Problem;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnIdChanging(long value);
+    partial void OnIdChanged();
+    partial void OnProblemIdChanging(long value);
+    partial void OnProblemIdChanged();
+    partial void OnCharacteristicIdChanging(long value);
+    partial void OnCharacteristicIdChanged();
+    partial void OnDataTypeIdChanging(long value);
+    partial void OnDataTypeIdChanged();
+    partial void OnBoolValueChanging(System.Nullable<bool> value);
+    partial void OnBoolValueChanged();
+    partial void OnIntValueChanging(System.Nullable<int> value);
+    partial void OnIntValueChanged();
+    partial void OnLongValueChanging(System.Nullable<long> value);
+    partial void OnLongValueChanged();
+    partial void OnFloatValueChanging(System.Nullable<float> value);
+    partial void OnFloatValueChanged();
+    partial void OnDoubleValueChanging(System.Nullable<double> value);
+    partial void OnDoubleValueChanged();
+    partial void OnStringValueChanging(string value);
+    partial void OnStringValueChanged();
+    #endregion
+		
+		public CharacteristicValue()
+		{
+			this._Characteristic = default(EntityRef<Characteristic>);
+			this._DataType = default(EntityRef<DataType>);
+			this._Problem = default(EntityRef<Problem>);
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="BigInt NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
+		public long Id
+		{
+			get
+			{
+				return this._Id;
+			}
+			set
+			{
+				if ((this._Id != value))
+				{
+					this.OnIdChanging(value);
+					this.SendPropertyChanging();
+					this._Id = value;
+					this.SendPropertyChanged("Id");
+					this.OnIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProblemId", DbType="BigInt NOT NULL")]
+		public long ProblemId
+		{
+			get
+			{
+				return this._ProblemId;
+			}
+			set
+			{
+				if ((this._ProblemId != value))
+				{
+					if (this._Problem.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnProblemIdChanging(value);
+					this.SendPropertyChanging();
+					this._ProblemId = value;
+					this.SendPropertyChanged("ProblemId");
+					this.OnProblemIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CharacteristicId", DbType="BigInt NOT NULL")]
+		public long CharacteristicId
+		{
+			get
+			{
+				return this._CharacteristicId;
+			}
+			set
+			{
+				if ((this._CharacteristicId != value))
+				{
+					if (this._Characteristic.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnCharacteristicIdChanging(value);
+					this.SendPropertyChanging();
+					this._CharacteristicId = value;
+					this.SendPropertyChanged("CharacteristicId");
+					this.OnCharacteristicIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DataTypeId", DbType="BigInt NOT NULL")]
+		public long DataTypeId
+		{
+			get
+			{
+				return this._DataTypeId;
+			}
+			set
+			{
+				if ((this._DataTypeId != value))
+				{
+					if (this._DataType.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnDataTypeIdChanging(value);
+					this.SendPropertyChanging();
+					this._DataTypeId = value;
+					this.SendPropertyChanged("DataTypeId");
+					this.OnDataTypeIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_BoolValue", DbType="Bit")]
+		public System.Nullable<bool> BoolValue
+		{
+			get
+			{
+				return this._BoolValue;
+			}
+			set
+			{
+				if ((this._BoolValue != value))
+				{
+					this.OnBoolValueChanging(value);
+					this.SendPropertyChanging();
+					this._BoolValue = value;
+					this.SendPropertyChanged("BoolValue");
+					this.OnBoolValueChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IntValue", DbType="Int")]
+		public System.Nullable<int> IntValue
+		{
+			get
+			{
+				return this._IntValue;
+			}
+			set
+			{
+				if ((this._IntValue != value))
+				{
+					this.OnIntValueChanging(value);
+					this.SendPropertyChanging();
+					this._IntValue = value;
+					this.SendPropertyChanged("IntValue");
+					this.OnIntValueChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LongValue", DbType="BigInt")]
+		public System.Nullable<long> LongValue
+		{
+			get
+			{
+				return this._LongValue;
+			}
+			set
+			{
+				if ((this._LongValue != value))
+				{
+					this.OnLongValueChanging(value);
+					this.SendPropertyChanging();
+					this._LongValue = value;
+					this.SendPropertyChanged("LongValue");
+					this.OnLongValueChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_FloatValue", DbType="Real")]
+		public System.Nullable<float> FloatValue
+		{
+			get
+			{
+				return this._FloatValue;
+			}
+			set
+			{
+				if ((this._FloatValue != value))
+				{
+					this.OnFloatValueChanging(value);
+					this.SendPropertyChanging();
+					this._FloatValue = value;
+					this.SendPropertyChanged("FloatValue");
+					this.OnFloatValueChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DoubleValue", DbType="Float")]
+		public System.Nullable<double> DoubleValue
+		{
+			get
+			{
+				return this._DoubleValue;
+			}
+			set
+			{
+				if ((this._DoubleValue != value))
+				{
+					this.OnDoubleValueChanging(value);
+					this.SendPropertyChanging();
+					this._DoubleValue = value;
+					this.SendPropertyChanged("DoubleValue");
+					this.OnDoubleValueChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_StringValue", DbType="NVarChar(MAX)")]
+		public string StringValue
+		{
+			get
+			{
+				return this._StringValue;
+			}
+			set
+			{
+				if ((this._StringValue != value))
+				{
+					this.OnStringValueChanging(value);
+					this.SendPropertyChanging();
+					this._StringValue = value;
+					this.SendPropertyChanged("StringValue");
+					this.OnStringValueChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Characteristic_CharacteristicValue", Storage="_Characteristic", ThisKey="CharacteristicId", OtherKey="Id", IsForeignKey=true)]
+		public Characteristic Characteristic
+		{
+			get
+			{
+				return this._Characteristic.Entity;
+			}
+			set
+			{
+				Characteristic previousValue = this._Characteristic.Entity;
+				if (((previousValue != value) 
+							|| (this._Characteristic.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Characteristic.Entity = null;
+						previousValue.CharacteristicValues.Remove(this);
+					}
+					this._Characteristic.Entity = value;
+					if ((value != null))
+					{
+						value.CharacteristicValues.Add(this);
+						this._CharacteristicId = value.Id;
+					}
+					else
+					{
+						this._CharacteristicId = default(long);
+					}
+					this.SendPropertyChanged("Characteristic");
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="DataType_CharacteristicValue", Storage="_DataType", ThisKey="DataTypeId", OtherKey="Id", IsForeignKey=true)]
+		public DataType DataType
+		{
+			get
+			{
+				return this._DataType.Entity;
+			}
+			set
+			{
+				DataType previousValue = this._DataType.Entity;
+				if (((previousValue != value) 
+							|| (this._DataType.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._DataType.Entity = null;
+						previousValue.CharacteristicValues.Remove(this);
+					}
+					this._DataType.Entity = value;
+					if ((value != null))
+					{
+						value.CharacteristicValues.Add(this);
+						this._DataTypeId = value.Id;
+					}
+					else
+					{
+						this._DataTypeId = default(long);
+					}
+					this.SendPropertyChanged("DataType");
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Problem_CharacteristicValue", Storage="_Problem", ThisKey="ProblemId", OtherKey="Id", IsForeignKey=true)]
+		public Problem Problem
+		{
+			get
+			{
+				return this._Problem.Entity;
+			}
+			set
+			{
+				Problem previousValue = this._Problem.Entity;
+				if (((previousValue != value) 
+							|| (this._Problem.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Problem.Entity = null;
+						previousValue.CharacteristicValues.Remove(this);
+					}
+					this._Problem.Entity = value;
+					if ((value != null))
+					{
+						value.CharacteristicValues.Add(this);
+						this._ProblemId = value.Id;
+					}
+					else
+					{
+						this._ProblemId = default(long);
+					}
+					this.SendPropertyChanged("Problem");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+	}
 }
 #pragma warning restore 1591
