private static DataTable FillTable(TableName tname) { var dt = new SqlCmd(tname.Provider, $"SELECT TOP 1 * FROM {tname.FormalName}").FillDataTable(); dt.SetSchemaAndTableName(tname); var schema = new TableSchema(tname); dt.PrimaryKeys(schema.PrimaryKeys.Keys); foreach (IColumn column in schema.Columns) { DataColumn col = dt.Columns[column.ColumnName]; col.AllowDBNull = column.Nullable; col.AutoIncrement = column.IsIdentity; //because string supports Unicode if (column.CType == CType.NVarChar || column.CType == CType.NChar) { if (column.Length > 0) { col.MaxLength = column.Length / 2; } } } if (dt.Rows.Count > 0) { dt.Rows[0].Delete(); } dt.AcceptChanges(); return(dt); }