public void SetValue(DbParameter param, Field field, Object value)
        {
            object foreignEntity = value;

            if (foreignEntity == null)
            {
                param.Value = DBNull.Value;
            }
            else
            {
                Field foreignKey = foreignEntity.GetTable().KeyFields
                    .FirstOrDefault(key =>
                                    key.FieldName.Equals(field.BindedTo, StringComparison.InvariantCultureIgnoreCase) ||
                                    key.FieldName.Equals(field.FieldName, StringComparison.InvariantCultureIgnoreCase));

                param.SetValue(foreignKey, foreignEntity);
            }
        }
Beispiel #2
0
        //--пока этот метод вызывается из CreateTable, проверку на _conn.Open делать не надо, но как только будет отдельно, надо будет делать!
        protected virtual void InsertDataToDb(DataTable table, string parameters_prefix)
        {
            string insert_sql = string.Format("insert into {0} values(", table.TableName);
            Array insert_params = new DbParameter[table.Columns.Count];
            for (int i = 0; i < table.Columns.Count; i++)
            {
                insert_sql = string.Format("{0}{2}{1}", insert_sql, table.Columns[i].ColumnName + (i + 1 != table.Columns.Count ? "," : ")"), parameters_prefix);
                DbParameter par = CreateParameter(string.Format("{1}{0}", table.Columns[i].ColumnName, parameters_prefix), Utilites.SystemTypeToDbTypeConverter.Convert(table.Columns[i].DataType), table.Columns[i].MaxLength);
                par.SourceColumn = table.Columns[i].ColumnName;
                insert_params.SetValue(par, i);
            }

            _DA = CreateDataAdapter("");
            var ins_cmd = CreateCommand(insert_sql);
            ins_cmd.Parameters.AddRange(insert_params);

            _DA.InsertCommand = ins_cmd;
            _DA.Update(table);
        }