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, }); }
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)))); }
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, }); }
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); }