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 回答