Page 1 of 1

SqlDataTable create descendant DataColumn Type

Posted: Wed 31 Aug 2016 05:21
by chris901
I have a descendant DataColumn Type with additional properties.

SqlDataTable calls CreateColumns() to add DataColumn components to the associated PgSqlDataTable.

Instead of creating DataColum types i would like to use my custom DataColumn Type MyDataColumn instead.

Is there a way to implement that so i can use my descendant DataColumn type with PgSqlDataTable?

What i tried now is this:

Code: Select all

        protected override void CreateColumns()
        {
            base.CreateColumns();

            // Replace with descendant type
            for (int i = Columns.Count - 1; i > -1; i--)
            {
                MyDataColumn col = new SqlColumn();
                col.ColumnName = Columns[i].ColumnName;
                col.DataType = Columns[i].DataType;
                
                Columns.RemoveAt(i);
                Columns.Add(col);
            }
}
This is an ugly workaround as it struggles with Primary Key and the order gets switched. I would to create MyDataColumn directy and not have to repalce them afterwards. Any help is appreciated!

Re: SqlDataTable create descendant DataColumn Type

Posted: Wed 07 Sep 2016 13:06
by Pinturiccio
We do not recommend you to override the CreateColumns method. Its implementation for PgSqlDataTable is complex, and we cannot guarantee correct work of your overridden method. Thus, it’s better to execute "base.CreateColumns();" first, as in your example, and then replace columns with new objects. You will also need to create code for replacing columns in the Constraints and PrimaryKey properties of your DataTable.