コード例 #1
0
ファイル: DBDialect.cs プロジェクト: npenin/uss
        public int GetSizeToPrimaryKey(GeneratorMapping generator)
        {
            switch (generator.Name)
            {
                case GeneratorMapping.GeneratorType.assigned:
                    ParamMapping param = generator.GetParam("size");
                    if (param == null)
                        throw new SqlMapperException("Property 'size' is missing in Id Generator Mapping");
                    return Int32.Parse(param.Value);
                case GeneratorMapping.GeneratorType.guid:
                    return 36;
				case GeneratorMapping.GeneratorType.native:
					param = generator.GetParam("size");
					if (param != null)
						return Int32.Parse(param.Value);
					else
						return 36;
				case GeneratorMapping.GeneratorType.business:
					param = generator.GetParam("size");
					if (param != null)
						return Int32.Parse(param.Value);
					else
						return 0;
				case GeneratorMapping.GeneratorType.inherited:
                    GeneratorMapping tmp = generator;
                    if (generator.Params == null)
                        return 36;
                    if (generator.Params.Length == 1)
                        tmp.Name = GeneratorMapping.GeneratorType.assigned;
                    if (generator.Params.Length > 1)
                        tmp.Name = GeneratorMapping.GeneratorType.native;
                    return GetSizeToPrimaryKey(tmp);
            }

            return 0;
        }
コード例 #2
0
        private void AddPrimaryKeysTo(CreateTableSQLCommand table, string columnName, GeneratorMapping map_generator)
        {
            if (!table.ColumnDefinitions.Contains(columnName))
            {
                DbType type;
                try
                {
                    type = _Dialect.GetDbTypeToPrimaryKey(map_generator);
                }
                catch (NullReferenceException ex)
                {
                    throw new MappingNotFoundException(string.Format("The type is not defined for the field {0} in the table {1}", columnName, table.TableName));
                }
                int size = _Dialect.GetSizeToPrimaryKey(map_generator);
                ColumnDefinition column = new ColumnDefinition(columnName, type, size);
                if (map_generator.Name == GeneratorMapping.GeneratorType.native)
                {
                    int seed = map_generator.GetParam("seed") != null ? Convert.ToInt32(map_generator.GetParam("seed").Value) : 1;
                    int increment = map_generator.GetParam("increment") != null ? Convert.ToInt32(map_generator.GetParam("increment").Value) : 1;
                    column.EnableAutoIncrement(increment, seed);
                }
                table.ColumnDefinitions.Add(columnName, column);

                if (table.PrimaryKey == null)
                    table.PrimaryKey = new PrimaryKey(String.Concat("PK_", table.TableName), new ColumnDefinition[] { column });
                else
                    table.PrimaryKey.Columns.Add(column);
            }
            else
            {
                if (map_generator.Name == GeneratorMapping.GeneratorType.business)
                {
                    ColumnDefinition column = table.ColumnDefinitions[columnName] as ColumnDefinition;
                    if (table.PrimaryKey == null)
                        table.PrimaryKey = new PrimaryKey(String.Concat("PK_", table.TableName), new ColumnDefinition[] { column });
                    else
                    {
                        if (!table.PrimaryKey.Columns.Contains(column))
                            table.PrimaryKey.Columns.Add(column);
                    }
                }
            }
        }
コード例 #3
0
ファイル: DBDialect.cs プロジェクト: npenin/uss
		public virtual DbType GetDbTypeToPrimaryKey(GeneratorMapping generator)
		{
			switch(generator.Name)
			{
				case GeneratorMapping.GeneratorType.assigned:
					ParamMapping param = generator.GetParam(DBTYPE);
					return (DbType) Enum.Parse(typeof(DbType), param.Value);

				case GeneratorMapping.GeneratorType.business:
                    ParamMapping pbiz = generator.GetParam(DBTYPE);
					return (DbType) Enum.Parse(typeof(DbType), pbiz.Value);

				case GeneratorMapping.GeneratorType.guid:
					return DbType.AnsiString;

				case GeneratorMapping.GeneratorType.native:
					StringDictionary dico = new StringDictionary();
					foreach(ParamMapping p in generator.Params)
					{
						dico.Add(p.Name, p.Value);
					}
					return GetDbTypeToNativeGenerator(dico);

				case GeneratorMapping.GeneratorType.inherited:
					GeneratorMapping tmp = generator;
					if(generator.Params == null)
						return DbType.AnsiString;
					if(generator.Params.Length == 1)
						tmp.Name = GeneratorMapping.GeneratorType.assigned;
					if(generator.Params.Length > 1)
						tmp.Name = GeneratorMapping.GeneratorType.native;
					return GetDbTypeToPrimaryKey(tmp);
			}

			return DbType.Object;
		}