private static void SetupTables(ListMapping <IDatabase, IMapping> Mappings, IDatabase Key, Schema.Default.Database.Database TempDatabase)
 {
     Contract.Requires <NullReferenceException>(Mappings != null, "Mappings");
     foreach (IMapping Mapping in Mappings[Key])
     {
         TempDatabase.AddTable(Mapping.TableName);
         SetupProperties(TempDatabase[Mapping.TableName], Mapping);
     }
 }
        private static void SetupJoiningTablesEnumerable(ListMapping <IDatabase, IMapping> Mappings, IMapping Mapping, IProperty Property, IDatabase Key, Schema.Default.Database.Database TempDatabase)
        {
            Contract.Requires <ArgumentNullException>(TempDatabase != null, "TempDatabase");
            Contract.Requires <ArgumentNullException>(TempDatabase.Tables != null, "TempDatabase.Tables");
            if (TempDatabase.Tables.FirstOrDefault(x => x.Name == Property.TableName) != null)
            {
                return;
            }
            IMapping MapMapping = Mappings[Key].FirstOrDefault(x => x.ObjectType == Property.Type);

            if (MapMapping == null)
            {
                return;
            }
            if (MapMapping == Mapping)
            {
                TempDatabase.AddTable(Property.TableName);
                TempDatabase[Property.TableName].AddColumn("ID_", DbType.Int32, 0, false, true, true, true, false, "", "", "");
                TempDatabase[Property.TableName].AddColumn(Mapping.TableName + Mapping.IDProperties.First().FieldName,
                                                           Mapping.IDProperties.First().Type.To(DbType.Int32),
                                                           Mapping.IDProperties.First().MaxLength,
                                                           false,
                                                           false,
                                                           false,
                                                           false,
                                                           false,
                                                           Mapping.TableName,
                                                           Mapping.IDProperties.First().FieldName,
                                                           "",
                                                           false,
                                                           false,
                                                           false);
                TempDatabase[Property.TableName].AddColumn(MapMapping.TableName + MapMapping.IDProperties.First().FieldName + "2",
                                                           MapMapping.IDProperties.First().Type.To(DbType.Int32),
                                                           MapMapping.IDProperties.First().MaxLength,
                                                           false,
                                                           false,
                                                           false,
                                                           false,
                                                           false,
                                                           MapMapping.TableName,
                                                           MapMapping.IDProperties.First().FieldName,
                                                           "",
                                                           false,
                                                           false,
                                                           false);
            }
            else
            {
                TempDatabase.AddTable(Property.TableName);
                TempDatabase[Property.TableName].AddColumn("ID_", DbType.Int32, 0, false, true, true, true, false, "", "", "");
                TempDatabase[Property.TableName].AddColumn(Mapping.TableName + Mapping.IDProperties.First().FieldName,
                                                           Mapping.IDProperties.First().Type.To(DbType.Int32),
                                                           Mapping.IDProperties.First().MaxLength,
                                                           false,
                                                           false,
                                                           false,
                                                           false,
                                                           false,
                                                           Mapping.TableName,
                                                           Mapping.IDProperties.First().FieldName,
                                                           "",
                                                           true,
                                                           false,
                                                           false);
                TempDatabase[Property.TableName].AddColumn(MapMapping.TableName + MapMapping.IDProperties.First().FieldName,
                                                           MapMapping.IDProperties.First().Type.To(DbType.Int32),
                                                           MapMapping.IDProperties.First().MaxLength,
                                                           false,
                                                           false,
                                                           false,
                                                           false,
                                                           false,
                                                           MapMapping.TableName,
                                                           MapMapping.IDProperties.First().FieldName,
                                                           "",
                                                           true,
                                                           false,
                                                           false);
            }
        }