예제 #1
0
        protected virtual FieldValue GenerateFieldTicks(Table table, PropertyRoute route, NameSequence name)
        {
            var ticksAttr = Settings.TypeAttribute <TicksColumnAttribute>(table.Type);

            if (ticksAttr != null && !ticksAttr.HasTicks)
            {
                throw new InvalidOperationException("HastTicks is false");
            }

            Type type = ticksAttr?.Type ?? route.Type;

            SqlDbTypePair pair = Settings.GetSqlDbType(ticksAttr, type);

            return(table.Ticks = new FieldTicks(route.Type)
            {
                Type = type,
                Name = ticksAttr?.Name ?? name.ToString(),
                SqlDbType = pair.SqlDbType,
                UserDefinedTypeName = pair.UserDefinedTypeName,
                Nullable = false,
                Size = Settings.GetSqlSize(ticksAttr, pair.SqlDbType),
                Scale = Settings.GetSqlScale(ticksAttr, pair.SqlDbType),
                Default = ticksAttr?.Default,
            });
        }
예제 #2
0
        protected virtual FieldValue GenerateFieldValue(ITable table, PropertyRoute route, NameSequence name, bool forceNull)
        {
            var att = Settings.FieldAttribute <SqlDbTypeAttribute>(route);

            SqlDbTypePair pair = Settings.GetSqlDbType(att, route.Type);

            return(new FieldValue(route.Type)
            {
                Name = name.ToString(),
                SqlDbType = pair.SqlDbType,
                UserDefinedTypeName = pair.UserDefinedTypeName,
                Nullable = Settings.IsNullable(route, forceNull),
                Size = Settings.GetSqlSize(att, pair.SqlDbType),
                Scale = Settings.GetSqlScale(att, pair.SqlDbType),
                Default = att?.Default,
            }.Do(f => f.UniqueIndex = f.GenerateUniqueIndex(table, Settings.FieldAttribute <UniqueIndexAttribute>(route))));
        }
예제 #3
0
        protected virtual Field GenerateFieldPrimaryKey(Table table, PropertyRoute route, NameSequence name)
        {
            var attr = GetPrimaryKeyAttribute(table.Type);

            PrimaryKey.PrimaryKeyType.SetDefinition(table.Type, attr.Type);

            SqlDbTypePair pair = Settings.GetSqlDbType(attr, attr.Type);

            return(table.PrimaryKey = new FieldPrimaryKey(route.Type, table)
            {
                Name = attr.Name,
                Type = attr.Type,
                SqlDbType = pair.SqlDbType,
                UserDefinedTypeName = pair.UserDefinedTypeName,
                Default = attr.Default,
                Identity = attr.Identity,
            });
        }
예제 #4
0
        protected override Field GenerateFieldPrimaryKey(Table table, PropertyRoute route, NameSequence name)
        {
            var att = Settings.FieldAttribute <SqlDbTypeAttribute>(route);

            SqlDbTypePair pair = Settings.GetSqlDbType(att, route.Type);

            var result = new FieldValue(route.Type)
            {
                PrimaryKey          = true,
                Name                = name.ToString(),
                SqlDbType           = pair.SqlDbType,
                UserDefinedTypeName = pair.UserDefinedTypeName,
                Nullable            = Settings.IsNullable(route, false),
                Size                = Settings.GetSqlSize(att, pair.SqlDbType),
                Scale               = Settings.GetSqlScale(att, pair.SqlDbType),
            };

            return(result);
        }