1

さまざまなデータベースを指し示し、データベースのスキーマ、つまり、テーブルとその列のプロパティ、関係、制約などを確認できるアプリケーションを作成しようとしています。LINQ to SQLメソッド GetTable( )、しかし、これは何も返さないようです。

public static IEnumerable<MetaTable> GetMetaTables()
{
    using (var connection = new SqlConnection(ConnectionString))
    using (var context = new SchemaDataContext(connection))
           return context.Mapping.GetTables().ToList();
}

私は何を間違っていますか!?

4

2 に答える 2

2

var model = new AttributeMappingSource().GetModel(typeof({YourDataContext})); return model.GetTables().ToList();


元のソリューションに編集します。

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    DataTable table = connection.GetSchema("Tables");

    // displaying data:
    foreach (System.Data.DataRow row in table.Rows)
    {
        foreach (System.Data.DataColumn col in table.Columns)
        {
           Console.WriteLine("{0} = {1}", col.ColumnName, row[col]);
        }
}
于 2013-09-03T10:30:21.863 に答える
0

問題は、エンティティSchemaDataContextがないため、マッピングがまったくないことです。ただし、とにかくエンティティがSchemaDataContextない場合は、ORM を使用しないでください。

Linq to SQL を使用しない、より簡単なソリューションを次に示します。

public static IEnumerable<string> GetTables()
{
    using (var connection = new SqlConnection(ConnectionString))
    {
        connection.Open();
        foreach (var table in connection.GetSchema("Tables").Rows)
        {
            yield return (string)table[2];
        }
    }
}
于 2013-09-03T10:28:37.073 に答える