private Database getTestDatabase() { var db = new Database { DatabaseName = "TEST", Description = "OLTP for tests", ObjectId = 0, Parent = null, Schemas = null }; var schema = new Schema { SchemaId = 1, SchemaName = "Sales", Description = "Sales department", Parent = db }; db.Schemas = new List<Schema>(); db.Schemas.Add(schema); var view = new View { ViewId = 20, ViewName = "vTest", Description = "Sample view", Parent = schema }; schema.Views = new List<View>(); schema.Views.Add(view); return db; }
private IList<Column> queryForViewColumns(View view) { var sql = new Sql(@"SELECT C.name AS ColumnName , I.DATA_TYPE AS BaseDataTypeName , I.CHARACTER_MAXIMUM_LENGTH AS MaximumLength , C.is_nullable AS AllowNull , CONVERT(INT, I.NUMERIC_PRECISION) AS Precision , CONVERT(INT, I.NUMERIC_SCALE) AS Scale , C.object_id AS ColumnId , I.COLUMN_DEFAULT AS DefaultValue , C.is_identity AS IsIdentity , C.is_computed AS IsComputed FROM sys.views AS V INNER JOIN sys.schemas AS S ON ( V.schema_id = S.schema_id ) INNER JOIN sys.columns AS C ON ( V.object_id = C.object_id ) INNER JOIN sys.types AS Y ON ( Y.user_type_id = C.user_type_id ) INNER JOIN INFORMATION_SCHEMA.COLUMNS AS I ON ( I.TABLE_SCHEMA = S.[name] AND I.TABLE_NAME = V.[name] AND I.COLUMN_NAME = C.[name] ) WHERE V.object_id = @0 ORDER BY C.column_id, C.name;", view.ViewId); return this.peta.Fetch<Column>(sql); }