我正在开发一个必须与InformationSchema
SQL Server
个 SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
SqlCommand sqlCmd = new SqlCommand("SELECT * FROM INFORMATION_SCHEMA.TABLES", conn);
SqlDataReader dataReader = sqlCmd.ExecuteReader();
DataTable dataTable = new DataTable();
dataTable.Load(dataReader);
数据库一起工作的应用。到目前为止,我可以通过执行以下操作来检索该信息:
DataTables
这可以按预期工作。但是这样我必须使用Linq to Sql
,这对我来说不太方便。
因此,经过一些研究后我发现使用System.Data.Linq.Mapping.MetaModel
可以获得 MyDatabaseDataContext context = new MyDatabaseDataContext (connection);
var tables = context.Mapping.GetTables();
// do some work
,它基本上包含有关数据库表和列的所有信息:
// these lines of code are generated by the sqlmetal.exe tool
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
public int Id
{
问题在于,显然只有在代码中指定了映射时才会检索到信息:
System.Data.Linq.DataContext context = new System.Data.Linq.DataContext(conn);
var tables = context.Mapping.GetTables();
因此,我无法通过这样做来检索它:
System.Data.Linq.Mapping.MetaModel
即使数据库确实有表,也不会返回任何内容。
那么,有没有办法为任何数据库检索DataContext
而不生成自定义{{1}}
提前致谢。