public SqlFixedDateDataType(ConstraintDefaultsConfiguration constraintDefaultsConfiguration, bool nullable, SqlDataTypeProvider sqlDataTypeProvider) : base(constraintDefaultsConfiguration, nullable ? typeof(FixedDate?) : typeof(FixedDate), false) { this.dateTimeDataType = sqlDataTypeProvider.GetSqlDataType(nullable ? typeof(DateTime?) : typeof(DateTime)); this.typeConverter = System.ComponentModel.TypeDescriptor.GetConverter(this.SupportedType); }
protected override Expression VisitColumnDefinition(SqlColumnDefinitionExpression columnDefinitionExpression) { this.currentIsPrimaryKey = columnDefinitionExpression.ConstraintExpressions .OfType <SqlSimpleConstraintExpression>() .Any(c => c.Constraint == SqlSimpleConstraint.PrimaryKey); var isAutoIncrement = columnDefinitionExpression.ConstraintExpressions .OfType <SqlSimpleConstraintExpression>() .Any(c => c.Constraint == SqlSimpleConstraint.AutoIncrement); var retval = (SqlColumnDefinitionExpression)base.VisitColumnDefinition(columnDefinitionExpression); if (isAutoIncrement) { var longTypeSqlName = sqlDataTypeProvider.GetSqlDataType(typeof(long)).GetSqlName(null); if (((SqlTypeExpression)columnDefinitionExpression.ColumnType).TypeName == longTypeSqlName) { retval = new SqlColumnDefinitionExpression(retval.ColumnName, new SqlTypeExpression("BIGSERIAL"), retval.ConstraintExpressions); } else { retval = new SqlColumnDefinitionExpression(retval.ColumnName, new SqlTypeExpression("SERIAL"), retval.ConstraintExpressions); } } return(retval); }