Ejemplo n.º 1
0
            public static SchemaOrdinals New()
            {
                var ordinals = new SchemaOrdinals();

                ordinals.Id          = -1;
                ordinals.Name        = -1;
                ordinals.DisplayName = -1;
                ordinals.Description = -1;
                ordinals.IsActive    = -1;

                return(ordinals);
            }
Ejemplo n.º 2
0
        static bool TryGetOrdinals(EnumInfo info, SqlDataReader rdr, out SchemaOrdinals ordinals)
        {
            ordinals = SchemaOrdinals.New();

            var schema  = rdr.GetSchemaTable();
            var columns = GetSqlColumns(schema);

            if (columns.Length != info.Columns.Count)
            {
                return(false);
            }

            for (var i = 0; i < columns.Length; i++)
            {
                var sqlCol = columns[i];

                if (sqlCol.AllowsNull || sqlCol.IsIdentity)
                {
                    return(false);
                }

                ColumnInfo col;

                if (sqlCol.Name == info.IdColumn.Name)
                {
                    ordinals.Id = i;
                    col         = info.IdColumn;
                }
                else if (sqlCol.Name == info.NameColumn?.Name)
                {
                    ordinals.Name = i;
                    col           = info.NameColumn;
                }
                else if (sqlCol.Name == info.DisplayNameColumn?.Name)
                {
                    ordinals.DisplayName = i;
                    col = info.DisplayNameColumn;
                }
                else if (sqlCol.Name == info.DescriptionColumn?.Name)
                {
                    ordinals.Description = i;
                    col = info.DescriptionColumn;
                }
                else if (sqlCol.Name == info.IsActiveColumn?.Name)
                {
                    ordinals.IsActive = i;
                    col = info.IsActiveColumn;
                }
                else
                {
                    return(false);
                }

                if (sqlCol.Type != col.SqlType || sqlCol.Size != col.Size)
                {
                    return(false);
                }
            }

            return(true);
        }