/// <summary>
        /// Adds the samples edit database methods.
        /// </summary>
        /// <param name="field">The field.</param>
        /// <returns>Source code for Sample Edit database methods.</returns>
        protected override string AddSamplesEditDatabaseMethods(ISampleDefinition field)
        {
            var sb = new StringBuilder();

            sb.AppendFormat(@"
        private void Child_DeleteSelf()
        {{
            var commandText = string.Format(""DELETE FROM \""{{0}}\""  WHERE \""Id\"" = :id"", string.Format(""\""{{0}}\"""", _sampleTableName ?? string.Empty));

            using (var ctx = ConnectionManager<OracleConnection>.GetManager(ServerSettings.ConnectionString, false))
            {{
                var connection = ctx.Connection;

                using (var command = new OracleCommand(commandText, connection))
                {{
                    command.BindByName = true;

                    command.Parameters.Add(""id"", Id);
                    command.ExecuteNonQuery();
                }}
            }} 
        }}

        private void Child_Insert(IEditableRoot parent)
        {{
            var commandText = string.Format(@""
                INSERT INTO """"{{0}}"""" (""""ItemId"""", """"SampleNumeric"""", """"SampleBoolean"""", """"SampleAlphanumeric"""", """"SampleType"""", """"Label"""") 
                    VALUES (:itemId, :sampleNumeric, :sampleBoolean, :sampleAlphanumeric, :sampleType, :label)
                RETURNING """"Id"""" INTO :p_IdOut
                "", OracleNamesTranslator.Translate(string.Format(""{{0}}"", _sampleTableName ?? string.Empty)));

            using (var ctx = ConnectionManager<OracleConnection>.GetManager(ServerSettings.ConnectionString, false))
            {{
                var connection = ctx.Connection;

                using (var command = new OracleCommand(commandText, connection))
                {{
                    command.BindByName = true;

                    command.Parameters.Add(""itemId"", parent.Id);
                    command.Parameters.Add(""sampleNumeric"", AdoHelper.NullCheck(SampleNumeric));
                    command.Parameters.Add(""sampleBoolean"", AdoHelper.NullCheck(SampleBoolean) != (object)DBNull.Value ? ((bool)SampleBoolean ? ""1"" : ""0"") : (object)DBNull.Value);
                    command.Parameters.Add(""sampleAlphanumeric"", AdoHelper.NullCheck(SampleAlphanumeric));
                    command.Parameters.Add(""sampleType"", AdoHelper.NullCheck(SampleType));
                    command.Parameters.Add(""label"", AdoHelper.NullCheck(Label));
                    
                    var idOut = command.Parameters.Add(""p_IdOut"", OracleDbType.Int32, ParameterDirection.Output);

                    command.ExecuteNonQuery();

                    LoadProperty(IdProperty, ((Oracle.DataAccess.Types.OracleDecimal)idOut.Value).ToInt32());
                }}
            }}
        }}

        private void Child_Update(IEditableRoot parent)
        {{
            var commandText = string.Format(@""
                UPDATE """"{{0}}""""
                SET """"SampleNumeric"""" = :sampleNumeric,
                    """"SampleBoolean"""" = :sampleBoolean,
                    """"SampleAlphanumeric"""" = :sampleAlphanumeric,
                    """"SampleType"""" = :sampleType,
                    """"Label"""" = :label
                WHERE """"Id"""" = :id"", OracleNamesTranslator.Translate(string.Format(""{{0}}"", _sampleTableName ?? string.Empty)));

            using (var ctx = ConnectionManager<OracleConnection>.GetManager(ServerSettings.ConnectionString, false))
            {{
                var connection = ctx.Connection;

                using (var command = new OracleCommand(commandText, connection))
                {{
                    command.BindByName = true;

                    command.Parameters.Add(""id"", Id);
                    command.Parameters.Add(""sampleNumeric"", AdoHelper.NullCheck(SampleNumeric));
                    command.Parameters.Add(""sampleBoolean"", AdoHelper.NullCheck(SampleBoolean) != (object)DBNull.Value ? ((bool)SampleBoolean ? ""1"" : ""0"") : (object)DBNull.Value);
                    command.Parameters.Add(""sampleAlphanumeric"", AdoHelper.NullCheck(SampleAlphanumeric));
                    command.Parameters.Add(""sampleType"", AdoHelper.NullCheck(SampleType));
                    command.Parameters.Add(""label"", AdoHelper.NullCheck(Label));
                    command.ExecuteNonQuery();
                }}
            }}
        }}
");

            return sb.ToString();
        }
        /// <summary>
        /// Adds the samples list database methods.
        /// </summary>
        /// <param name="field">The field.</param>
        /// <returns>Source code for Sample List database methods.</returns>
        protected override string AddSamplesListDatabaseMethods(ISampleDefinition field)
        {
            var sb = new StringBuilder();

            sb.AppendFormat(@"
        private void Child_Fetch(DynamicSampleCriteria criteria)
        {{
            RaiseListChangedEvents = false;            

            using (var ctx = ConnectionManager<OracleConnection>.GetManager(ServerSettings.ConnectionString, false))
            {{
                var cn = ctx.Connection;
                
                var query = string.Format(@""
                    SELECT """"Id"""", 
                            """"ItemId"""", 
                            """"SampleNumeric"""", 
                            """"SampleBoolean"""", 
                            """"SampleAlphanumeric"""",
                            """"SampleType"""",
                            """"Label""""
                    FROM """"{{0}}"""" 
                    WHERE """"ItemId"""" = '{{1}}'
                    ORDER BY """"Label""""
                    "", OracleNamesTranslator.Translate(_sampleTableName), criteria.Item == null ? 0 : criteria.Item.Id);

                using (var command = new OracleCommand(query, cn))
                {{
                    var reader = command.ExecuteReader();

                    int label = 0;
                    while (reader.Read())
                    {{
                        label++;

                        var dto = new SampleDto
                        {{
                            Id = SafeTypeConverter.Convert<int>(reader.GetValue(0)),
                            ItemId = SafeTypeConverter.Convert<int>(reader.GetValue(1)),
                            Label = label.ToString(""D7""),
                            SampleNumeric = SafeTypeConverter.Convert<double?>(reader.GetValue(2)),
                            SampleBoolean = SafeTypeConverter.Convert<bool?>(reader.GetValue(3)),
                            SampleAlphanumeric = AdoHelper.GetString(reader, 4),
                            SampleType = AdoHelper.GetString(reader, 5),
                            Label = AdoHelper.GetString(reader, 6)
                        }};

                        var newSample = DataPortal.FetchChild<{0}SampleEdit>(dto);
                        this.Add(newSample);
                    }}
                }}                
            }}

            // Should be removed once the old DB entries will be updated.
            // Date: 8/19/2013
            this.GenerateValuesForEmptyLabels();

            if (criteria.Item != null)
            {{
                if (!string.IsNullOrEmpty(_sampleTypeFieldName))
                {{
                    try
                    {{
                        var sampleTypeProperty = criteria.Item.GetPropertyByName(_sampleTypeFieldName);
                        SampleType = sampleTypeProperty == null ? ""Number"" : sampleTypeProperty.GetValue(criteria.Item, null).ToString();
                    }}
                    catch(Exception ex)
                    {{
                        Log4NetLogger.Instance.Log(LogSeverity.Error, """", ex);
                        SampleType = ""Number"";
                    }}
                }}
            }}

            RaiseListChangedEvents = true;
        }}

        private void Child_Fetch(SampleCriteria criteria)
        {{
            RaiseListChangedEvents = false;

            for(int i = 0; i < criteria.SampleCount; i++)
            {{
                var newSample = DataPortal.CreateChild<{0}SampleEdit>();
                newSample.ItemId = criteria.ItemId;
                newSample.Label = ((Count > 0 ? int.Parse(this.Max(x => x.Label)) : Count) + 1).ToString(""D7"");
                newSample.SampleType = this.SampleType;

                this.Add(newSample);
            }}

            RaiseListChangedEvents = true;
        }}

        private void DataPortal_Fetch(DynamicSampleCriteria criteria)
        {{
            if (criteria.Item != null)
            {{
                if (!string.IsNullOrEmpty(_sampleTypeFieldName))
                    SampleType = criteria.Item.GetValueByPropertyName(_sampleTypeFieldName);

                var sampleList = PopulateSampleList(criteria.Item);

                RaiseListChangedEvents = false;

                foreach (var sample in sampleList)
                {{
                    this.Add(sample);
                }}

                RaiseListChangedEvents = true;
            }}

            MarkAsChild();
        }}
", field.Name);
            
            return sb.ToString();
        }
 /// <summary>
 /// Adds the samples edit database methods.
 /// </summary>
 /// <param name="field">The field.</param>
 /// <returns>Source code for Sample Edit database methods.</returns>
 protected override string AddSamplesEditDatabaseMethods(ISampleDefinition field)
 {
     return string.Empty;
 }
            protected override string AddSamplesEditDatabaseMethods(ISampleDefinition field)
            {
                MethodsCalled.Add("AddSamplesEditDatabaseMethods");

                return string.Empty;
            }
        protected override string AddSamplesEditDatabaseMethods(ISampleDefinition field)
        {
            var sb = new StringBuilder();

            sb.AppendFormat(@"
        private void Child_DeleteSelf()
        {{
            var commandText = string.Format(""DELETE FROM {{0}}  WHERE Id = @id"", string.Format(""[dbo].[{{0}}]"", _sampleTableName ?? string.Empty));

            using (var ctx = ConnectionManager<SqlConnection>.GetManager(ServerSettings.ConnectionString, false))
            {{
                var connection = ctx.Connection;

                using (var command = connection.CreateCommand())
                {{
                    command.CommandText = commandText;
                    command.Parameters.AddWithValue(""@id"", Id);
                    command.ExecuteNonQuery();
                }}
            }} 
        }}

        private void Child_Insert(IEditableRoot parent)
        {{
            var commandText = string.Format(@""
                INSERT INTO {{0}} (ItemId, SampleNumeric, SampleBoolean, SampleAlphanumeric, SampleType, Label) 
                    VALUES (@itemId, @sampleNumeric, @sampleBoolean, @sampleAlphanumeric, @sampleType, @label)

                SELECT SCOPE_IDENTITY()"", string.Format(""[dbo].[{{0}}]"", _sampleTableName ?? string.Empty));

            using (var ctx = ConnectionManager<SqlConnection>.GetManager(ServerSettings.ConnectionString, false))
            {{
                var connection = ctx.Connection;

                using (var command = connection.CreateCommand())
                {{
                    command.CommandText = commandText;
                    command.Parameters.AddWithValue(""@itemId"", parent.Id);
                    command.Parameters.AddWithValue(""@sampleNumeric"", AdoHelper.NullCheck(SampleNumeric));
                    command.Parameters.AddWithValue(""@sampleBoolean"", AdoHelper.NullCheck(SampleBoolean));
                    command.Parameters.AddWithValue(""@sampleAlphanumeric"", AdoHelper.NullCheck(SampleAlphanumeric));
                    command.Parameters.AddWithValue(""@sampleType"", AdoHelper.NullCheck(SampleType));
                    command.Parameters.AddWithValue(""@label"", AdoHelper.NullCheck(Label));

                    var sampleId = command.ExecuteScalar();
                    LoadProperty(IdProperty, Convert.ToInt32(sampleId));
                }}
            }}
        }}

        private void Child_Update(IEditableRoot parent)
        {{
            var commandText = string.Format(@""
                UPDATE {{0}}
                SET SampleNumeric = @sampleNumeric,
                    SampleBoolean = @sampleBoolean,
                    SampleAlphanumeric = @sampleAlphanumeric,
                    SampleType = @sampleType,
                    Label = @label
                WHERE Id = @id"", string.Format(""[dbo].[{{0}}]"", _sampleTableName ?? string.Empty));

            using (var ctx = ConnectionManager<SqlConnection>.GetManager(ServerSettings.ConnectionString, false))
            {{
                var connection = ctx.Connection;

                using (var command = connection.CreateCommand())
                {{
                    command.CommandText = commandText;
                    command.Parameters.AddWithValue(""@id"", Id);
                    command.Parameters.AddWithValue(""@sampleNumeric"", AdoHelper.NullCheck(SampleNumeric));
                    command.Parameters.AddWithValue(""@sampleBoolean"", AdoHelper.NullCheck(SampleBoolean));
                    command.Parameters.AddWithValue(""@sampleAlphanumeric"", AdoHelper.NullCheck(SampleAlphanumeric));
                    command.Parameters.AddWithValue(""@sampleType"", AdoHelper.NullCheck(SampleType));
                    command.Parameters.AddWithValue(""@label"", AdoHelper.NullCheck(Label));
                    command.ExecuteNonQuery();
                }}
            }}
        }}
", field.Name);

            return sb.ToString();
        }