public void CanParseTypes() { var typeNames = new string[] { "bigint", "binary", "bit", "char", "date", "datetime", "datetime2", "datetimeoffset", "decimal", "float", "geography", "geometry", "hierarchyid", "image", "int", "money", "nchar", "ntext", "numeric", "nvarchar", "real", "smalldatetime", "smallint", "smallmoney", "sql_variant", "sysname", "text", "time", "timestamp", "tinyint", "uniqueidentifier", "varbinary", "varchar", "xml", }; foreach (var typeName in typeNames) { try { SqlServerSqlTypeExtensions.GetClrType(typeName, true); SqlServerSqlTypeExtensions.GetClrType(typeName, false); } catch { System.Diagnostics.Debug.WriteLine("problem type: " + typeName); Assert.Fail(); } } Assert.Pass(); }
private static DataTable GetDataTableFromSchema(ModuleParameter parameter, SqlConnection connection) { var userType = new SqlParameter { Value = parameter.TypeId, ParameterName = "@userTypeId", }; var userSchema = new SqlParameter { Value = parameter.TypeSchema, ParameterName = "@schemaId", }; var query = "SELECT SC.name, ST.name AS datatype FROM sys.columns SC " + "INNER JOIN sys.types ST ON ST.system_type_id = SC.system_type_id AND ST.is_user_defined = 0 " + "WHERE ST.name <> 'sysname' AND SC.object_id = " + "(SELECT type_table_object_id FROM sys.table_types WHERE schema_id = @schemaId AND user_type_id = @userTypeId);"; var dataTable = new DataTable(); using (var command = new SqlCommand(query, connection)) { command.Parameters.Add(userType); command.Parameters.Add(userSchema); using (var sqlDataReader = command.ExecuteReader()) { while (sqlDataReader.Read()) { var columnName = sqlDataReader["name"].ToString(); var clrType = SqlServerSqlTypeExtensions.GetClrType(sqlDataReader["datatype"].ToString(), false); dataTable.Columns.Add(columnName, clrType); } } } return(dataTable); }