我正在尝试编写一个应用程序,我可以指向不同的数据库并查看数据库的模式,即表及其列的属性,关系,约束等。我一直在研究{{3方法GetTable(),但这似乎什么都不返回;
public static IEnumerable<MetaTable> GetMetaTables()
{
using (var connection = new SqlConnection(ConnectionString))
using (var context = new SchemaDataContext(connection))
return context.Mapping.GetTables().ToList();
}
我做错了什么!?
答案 0 :(得分: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]);
}
}
答案 1 :(得分: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];
}
}
}
答案 2 :(得分:0)
我找到了另一个问题的答复,这个问题也完美地回答了我的问题!