public static CreateClassCommand Evaluate(Command command)
        {
            if (command.Parameters.Count < 3)
            {
                return(null);
            }

            if (command.Parameters[0].Name.ToLower() != "create")
            {
                return(null);
            }
            if (command.Parameters[0].Value != null)
            {
                return(null);
            }

            if (command.Parameters[1].Name.ToLower() != "class")
            {
                return(null);
            }
            if (command.Parameters[1].Value != null)
            {
                return(null);
            }

            string name = command.Parameters[2].Name;

            if (string.IsNullOrEmpty(name))
            {
                return(null);     // register exception...
            }
            CreateClassCommand createClassCommand = new CreateClassCommand(name);

            IList <Parameter> parameters = command.Parameters[2].Value as IList <Parameter>;

            if (parameters != null)
            {
                foreach (Parameter parameter in parameters)
                {
                    switch (parameter.Name.ToLower())
                    {
                    case "base":
                        createClassCommand.BaseClass = parameter.Value.ToString();
                        break;

                    case "table":
                    case "tablename":
                        createClassCommand.TableName = parameter.Value.ToString();
                        break;
                    }
                }
            }

            return(createClassCommand);
        }
        public void OnExecuting(object sender, ExecutionCancelEventArgs e)
        {
            CreateClassCommand createClassCommand = CreateClassCommand.Evaluate(e.Command);

            if (createClassCommand == null)
            {
                return;
            }
            IEngine        engine        = sender as IEngine;
            ISchemaService schemaService = engine.GetService <ISchemaService>();

            string name         = createClassCommand.Name;
            string propertyName = "Id";
            string propertyType = "System.Int32";
            string columnName   = name + "Id";
            DbType columnType   = DbType.Int32;

            //Add the class to the schema
            schemaService.CreateClass(name);

            //Add a property to the class
            schemaService.CreateProperty(name, propertyName, propertyType);

            //Mark the property as an identity property
            schemaService.SetPropertyMetaData(name, propertyName, PropertyMetaData.Identity, true);

            //Mark the property as not nullable
            schemaService.SetPropertyMetaData(name, propertyName, PropertyMetaData.Nullable, false);

            //Mark the property as assigned by the data source
            schemaService.SetPropertyMetaData(name, propertyName, PropertyMetaData.SourceAssigned, true);

            //Add the table to the schema
            schemaService.CreateTable(createClassCommand.TableName);

            //Add a column to the table
            schemaService.CreateColumn(createClassCommand.TableName, columnName, columnType);

            //Mark the column as a primary key column
            schemaService.SetColumnMetaData(createClassCommand.TableName, columnName, ColumnMetaData.PrimaryKey, true);

            //Mark the column as not nullable
            schemaService.SetColumnMetaData(createClassCommand.TableName, columnName, ColumnMetaData.Nullable, false);

            //Mark the column as an auto increasing column
            schemaService.SetColumnMetaData(createClassCommand.TableName, columnName, ColumnMetaData.AutoIncreaser, true);

            //Map the class to the table in the schema
            schemaService.MapClassToTable(name, createClassCommand.TableName);

            //Map the property to the column in the schema
            schemaService.MapPropertyToColumn(name, propertyName, createClassCommand.TableName, columnName);
        }
Beispiel #3
0
        public void OnExecuting(object sender, ExecutionCancelEventArgs e)
        {
            CreateClassCommand createClassCommand = CreateClassCommand.Evaluate(e.Command);

            if (createClassCommand == null)
            {
                return;
            }

            IEngine          engine          = sender as IEngine;
            IDatabaseService databaseService = engine.GetService <IDatabaseService>();
            ISqlService      sqlService      = engine.GetService <ISqlService>();

            //Begins a new transaction or gets the current transaction
            IDbTransaction transaction = databaseService.EnsureTransaction();

            //Create the database table with the primary key column
            sqlService.CreateTableWithPrimaryKeyColumn(transaction, createClassCommand.TableName, createClassCommand.Name + "Id");
        }
        public static CreateClassCommand Evaluate(Command command)
        {
            if (command.Parameters.Count < 3)
                return null;

            if (command.Parameters[0].Name.ToLower() != "create")
                return null;
            if (command.Parameters[0].Value != null)
                return null;

            if (command.Parameters[1].Name.ToLower() != "class")
                return null;
            if (command.Parameters[1].Value != null)
                return null;

            string name = command.Parameters[2].Name;
                if (string.IsNullOrEmpty(name))
                    return null;  // register exception...

            CreateClassCommand createClassCommand = new CreateClassCommand(name);

            IList<Parameter> parameters = command.Parameters[2].Value as IList<Parameter>;
            if (parameters != null)
            {
                foreach (Parameter parameter in parameters)
                {
                    switch (parameter.Name.ToLower())
                    {
                        case "base":
                            createClassCommand.BaseClass = parameter.Value.ToString();
                            break;
                        case "table":
                        case "tablename":
                            createClassCommand.TableName = parameter.Value.ToString();
                            break;
                    }
                }
            }

            return createClassCommand;
        }