private Type GetReturnType(DatabaseFunction cItem)
        {
            //اینجا میتوان برای استورد پروسیجر ها با یک خصوصیت تعیین کرد که کدوم پارامتر خروجی اصلی است
            BizColumn bizColumn = new BizColumn();
            DatabaseFunctionParameter parameter = null;
            var output = (short)Enum_DatabaseFunctionParameterType.Output;

            parameter = cItem.DatabaseFunctionParameter.FirstOrDefault(x => x.InputOutput == output);
            if (parameter != null)
            {
                return(bizColumn.GetColumnDotNetType(parameter.DataType, false));
            }
            else
            {
                output    = (short)Enum_DatabaseFunctionParameterType.InputOutput;
                parameter = cItem.DatabaseFunctionParameter.FirstOrDefault(x => x.InputOutput == output);
                if (parameter != null)
                {
                    return(bizColumn.GetColumnDotNetType(parameter.DataType, false));
                }
                else
                {
                    output    = (short)Enum_DatabaseFunctionParameterType.ReturnValue;
                    parameter = cItem.DatabaseFunctionParameter.FirstOrDefault(x => x.InputOutput == output);
                    if (parameter != null)
                    {
                        return(bizColumn.GetColumnDotNetType(parameter.DataType, false));
                    }
                }
            }
            return(null);
        }
예제 #2
0
        private DatabaseFunctionParameter ConvertToDatabaseFunctionParameter(FunctionParameter parameter)
        {
            var type = ((PrimitiveDataType)parameter.DataType).Clone();
            var mode = this.parameterModeMapping[parameter.Mode];
            var databaseFunctionParameter = new DatabaseFunctionParameter(parameter.Name, type, mode);

            this.ApplyDataGeneratorAnnotationToStoreItem(databaseFunctionParameter, parameter);

            return(databaseFunctionParameter);
        }
        private void UpdateEntityInModel(MyProjectEntities projectContext, int databaseID, DatabaseFunctionDTO function, List <DBSchema> listAddedSchema)
        {
            DBSchema dbSchema = null;
            var      schema   = function.RelatedSchema;

            dbSchema = listAddedSchema.FirstOrDefault(x => x.DatabaseInformationID == databaseID && x.Name == function.RelatedSchema);
            if (dbSchema == null)
            {
                dbSchema = new DBSchema()
                {
                    DatabaseInformationID = databaseID, Name = schema
                };
                dbSchema.SecurityObject      = new SecurityObject();
                dbSchema.SecurityObject.Type = (int)DatabaseObjectCategory.Schema;
                projectContext.DBSchema.Add(dbSchema);
                listAddedSchema.Add(dbSchema);
            }

            var dbFunction = projectContext.DatabaseFunction.Include("DatabaseFunctionParameter").FirstOrDefault(x => x.FunctionName == function.Name && x.DBSchema.DatabaseInformationID == databaseID);

            if (dbFunction == null)
            {
                dbFunction = new DatabaseFunction();
                projectContext.DatabaseFunction.Add(dbFunction);
                dbFunction.FunctionName = function.Name;
                dbFunction.Enable       = true;
            }
            dbFunction.DBSchema = dbSchema;

            dbFunction.Type = (short)function.Type;
            foreach (var column in function.DatabaseFunctionParameter)
            {
                var dbColumn = dbFunction.DatabaseFunctionParameter.Where(x => x.ParamName == column.ParameterName).FirstOrDefault();
                if (dbColumn == null)
                {
                    dbColumn           = new DatabaseFunctionParameter();
                    dbColumn.ParamName = column.ParameterName;
                    dbColumn.Enable    = true;
                    dbFunction.DatabaseFunctionParameter.Add(dbColumn);
                }
                dbColumn.InputOutput = (short)column.InputOutput;
                dbColumn.DataType    = column.DataType;
                dbColumn.ParamName   = column.ParameterName;
            }
            var columnNames = function.DatabaseFunctionParameter.Select(x => x.ParameterName).ToList();

            foreach (var dbColumn in dbFunction.DatabaseFunctionParameter.Where(x => !columnNames.Contains(x.ParamName)))
            {
                dbColumn.Enable = false;
            }
        }