Example #1
0
        /// <summary>
        /// Создаём модуль 
        /// </summary>
        /// <param name="moduleName"></param>
        /// <param name="fields"></param>
        /// <returns></returns>
        public Guid CreateModule(string moduleName, string description, List<MetadataField> fields)
        {
            Guid moduleId = Guid.NewGuid();

            //
            //  транзакция для соаздания модуля
            //
            using (DbTransaction trans = _connection.BeginTransaction())
            {
                try
                {
                    #region Добавление информации по модулю

                    using (DbCommand cmd = _connection.CreateCommand())
                    {
                        cmd.Transaction = trans;

                        // MetadataModules
                        cmd.CommandText = "INSERT INTO MetadataModules VALUES('" + moduleId.ToString() + "', '" + moduleName + "', '" + description + "') ";

                        //  MetadataFields
                        foreach (MetadataField f in fields)
                        {
                            cmd.CommandText += "INSERT INTO MetadataFields VALUES('" + f.Name + "', '" + f.SqlType.ToString() + "', '" + f.Description + "', '" + moduleId.ToString() + "', " + f.SqlTypeLength + ") ";
                        }

                        cmd.ExecuteNonQuery();
                    }

                    #endregion

                    #region Создание физической таблицы модуля

                    using (DbCommand cmd = _connection.CreateCommand())
                    {
                        //
                        //  добавляем к коллекции полей служебные
                        //
                        MetadataField PlowMachineId = new MetadataField(moduleId, "PlowMachineId", "", System.Data.SqlDbType.UniqueIdentifier, 0);
                        MetadataField CreatedOn = new MetadataField(moduleId, "CreatedOn", "", System.Data.SqlDbType.DateTime, 0);
                        MetadataField ModifidedOn = new MetadataField(moduleId, "ModifidedOn", "", System.Data.SqlDbType.DateTime, 0);

                        fields.Add(PlowMachineId);
                        fields.Add(CreatedOn);
                        fields.Add(ModifidedOn);

                        cmd.Transaction = trans;
                        cmd.CommandText = ImplementModuleCreateTableCommand(moduleName, fields);
                        cmd.ExecuteNonQuery();
                    }

                    #endregion

                    // фиксируем транзакцию
                    trans.Commit();
                }
                catch
                {
                    // откатываем
                    trans.Rollback();
                    throw;
                }
            }

            return moduleId;
        }
Example #2
0
        /// <summary>
        /// Список полей для модуля
        /// </summary>
        /// <param name="moduleId">идентификатор модуля</param>
        /// <returns></returns>
        public List<MetadataField> GetFieldsList(Guid moduleId)
        {
            List<MetadataField> fields = new List<MetadataField>(0);

            //
            //  формируем строку запроса, для выборки иформации по модулям
            //
            using (DbCommand cmd = _connection.CreateCommand())
            {
                cmd.CommandText = "SELECT * FROM MetadataFields WHERE ModuleId = '" + moduleId.ToString() + "'";

                //
                //  извлекаем полученные данные
                //
                using (DbDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        string name = reader.GetString(0);
                        System.Data.SqlDbType type =(System.Data.SqlDbType)Enum.Parse(typeof(System.Data.SqlDbType), reader.GetString(1));
                        string description = reader.GetString(2);
                        Guid mdlId = reader.GetGuid(3);
                        uint length = (uint)reader.GetByte(4);

                        MetadataField field = new MetadataField(mdlId, name, description, type, length);

                        fields.Add(field);
                    }
                }
            }

            return fields;
        }
Example #3
0
 /// <summary>
 /// Формирование строки с описание столбца
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="field"></param>
 private void AppendCreateColumnString(StringBuilder builder, MetadataField field)
 {
     builder.Append(field.Name + " " + field.SqlType.ToString());
     if (IsTypeWithLength(field.SqlType))
     {
         builder.Append("(" + field.SqlTypeLength + ")");
     }
 }
Example #4
0
        /// <summary>
        /// Информацио о поле
        /// </summary>
        /// <param name="fieldName"></param>
        /// <returns></returns>
        public MetadataField GetFieldInfo(string fieldName)
        {
            MetadataField field = null;

            //
            //  формируем строку запроса, для выборки иформации по модулям
            //
            using (DbCommand cmd = _connection.CreateCommand())
            {
                cmd.CommandText = "SELECT * FROM MetadataFields WHERE FieldName = '" + fieldName + "'";

                //
                //  извлекаем полученные данные
                //
                using (DbDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        string name = reader.GetString(0);
                        System.Data.SqlDbType type = (System.Data.SqlDbType)Enum.Parse(typeof(System.Data.SqlDbType), reader.GetString(1));
                        string description = reader.GetString(2);
                        Guid mdlId = reader.GetGuid(3);
                        uint length = (uint)reader.GetByte(4);

                        field = new MetadataField(mdlId, name, description, type, length);
                    }
                }
            }

            return field;
        }