从任何数据库获取System.Data.Linq.Mapping.MetaModel

时间:2013-12-10 21:53:57

标签: c# linq-to-sql mapping information-schema

我正在开发一个必须与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}}

提前致谢。

0 个答案:

没有答案