2009-05-26 14 views
0

すべてのテーブルの一覧を取得し、列を列挙するためにそのリストを使用する方法を教えてください。 私はどちらか一方を記述した記事を見つけましたが、両方を記述することはできません。列の列挙を使用したLINQテーブルの列挙

マイネットの結果は、私が、例えば、私ができるように、各テーブルのすべての列の名前が含まれている静的クラスを生成したいです。私は現在、thisメソッドを使用してい

comboBoxFoo.DisplayMember = SomeNamespace.SomeTable.SomeDisplayColumnName; 
comboBoxFoo.ValueMember = SomeNamespace.SomeTable.SomeIDColumnName; 
comboBoxFoo.DataSource = dingo; 

ましたそれが動作している間は、リスト内に手動でテーブルを作成する必要があります。

私は、SomeNameSpace.SomeTableクラスを手動で生成する別個のコマンドラインプロジェクトを持っています。生成されたクラスファイルをプロジェクトに追加します。

理想的には、私はテーブルのforeachの貫通ビアループ可能性があり、このような何かの場合:

foreach(var table in someTableNumerationMethodForAGivenContext()) 
{ 
    var columnList = databaseContext.ColumnNames<someTable>(); 
    foreach(var columnData in columnList) 
    { 
     DoJazz(columnData.Name); 
    } 
} 

を手動)(databaseContext.ColumnNamesをしなければならないよりも、この他を行うには良い方法はありますか?

編集1: LinqToSQLを使用しています。 ADO.NETへの移行もテーブル上のオプションですが、現時点では、必要なことはありません。

編集2: L2Sはデータバインディングを行いますが、私は後でテーブルから列名のリストを取得しています。 L2Sはこれを提供していないか、私の側では明らかではありません。 私はSomeTable.SomeColumn.ToString()のような何かをしたいと思います。 SubSonicにはこれがあります。

最終: ありがとうございます。すべてが非常に良い答えであり、答えに私を導きます。あなたたち最高!

答えて

0

あなたが記述していることは、本質的にSQLへORM

LINQのですが、あなたが記述されている情報が含まれているあなたのためのプロトタイプのC#クラスを作成しますORMです。これは、あなたが例示した種類のデータバインディングを優れたサポートしています。

+0

私はLinq to SQLを使用していますが、列名を参照する方法はわかりません。私が読むことができるように提供するすべてのリンク?私は完全に明白な何かを逃しているように感じる。 –

0

私はあなたがthisを探していると思います。

DataContext.Mapping.GetTable(yourTable).RowType.DataMemebers() 
0

私はこれを行うには2つの方法が考えられます。

)SMOを使用して、データベース内のすべてのテーブル/カラムを取得します。

Microsoft.SqlServer.ConnectionInfo

Microsoft.SqlServer.Management.Sdk.Sfc

Microsoft.SqlServerを:あなたが参照する必要があります。

 ServerConnection connection = new ServerConnection("."); 
     Server server = new Server(connection); 
     Database db = server.Databases["Northwind"]; 
     foreach (Table table in db.Tables) 
     { 
      foreach (Column column in table.Columns) 
      { 
       Console.WriteLine("Table: {0}, Column: {1}",table.Name,column.Name); 
      } 
     } 
    } 

B)LINQ to SQLはによって生成されたデータクラスを使用してアセンブリの上に反映させるためにリフレクションを使用しますSMO

その後、あなたはこのような何かを行うことができます。 Table属性を持つものはすべてテーブルであり、Column属性を持つものはすべて列です。あなたがサンプルが必要かどうか私に教えてください...