btw, never use MessageBoxon server, p
A basic query using LINQ-to-SQL looks something like this:
using (var ctx = new DataClasses1DataContext())
{
string[] names = {"BASE_TABLE", "BASE TABLE"};
var qry = (from table in ctx.Tables
where names.Contains(table.TableName)
join column in ctx.Columns on table.TableName equals column.TableName
orderby table.TableName, column.ColumnName
select new { table.TableName, column.ColumnName }).ToList();
foreach (var pair in qry.GroupBy(pair => pair.TableName))
{
TreeNode tableNode = new TreeNode(pair.Key);
myTree.Nodes.Add(tableNode);
foreach (var col in pair)
{
tableNode.ChildNodes.Add(new TreeNode(col.ColumnName));
}
}
}
assuming manual DBML design (as the developer filters these tables) line by line:
<?xml version="1.0" encoding="utf-8"?><Database Name="YourDatabase" Class="DataClasses1DataContext" xmlns="http://schemas.microsoft.com/linqtosql/dbml/2007">
<Connection Mode="WebSettings" ConnectionString="YourConnectionString" SettingsObjectName="System.Configuration.ConfigurationManager.ConnectionStrings" SettingsPropertyName="YourConnectionStringPropertyName" Provider="System.Data.SqlClient" />
<Table Name="INFORMATION_SCHEMA.TABLES" Member="Tables">
<Type Name="Table">
<Column Name="TABLE_NAME" Member="TableName" Type="System.String" DbType="nvarchar(128) NOT NULL" CanBeNull="false" />
</Type>
</Table>
<Table Name="INFORMATION_SCHEMA.COLUMNS" Member="Columns">
<Type Name="Column">
<Column Name="TABLE_NAME" Member="TableName" Type="System.String" DbType="nvarchar(128) NOT NULL" CanBeNull="false" />
<Column Name="COLUMN_NAME" Member="ColumnName" Type="System.String" DbType="nvarchar(128) NOT NULL" CanBeNull="false" />
<Column Name="ORDINAL_POSITION" Member="OrdinalPosition" Type="System.Int32" DbType="int NOT NULL" CanBeNull="false" />
</Type>
</Table>
</Database>
source
share