实体框架核心并从sqlite数据库获取表列表

时间:2019-03-28 10:04:21

标签: c# sqlite entity-framework-core

我想要一个存在于sqlite数据库中的表的列表,而且我有一个简单的查询,看起来像:

SELECT name from sqlite_master WHERE type='table';

但是现在我需要使用实体框架核心来执行此操作,因此我将其绑定到DataContext,这是我被卡住的地方,因为数据上下文包含所有表形式的数据库集而不是sqlite系统表,我尝试使用在公开的数据库外观上查询,但不返回任何pother值,然后返回受影响的行数,例如:

using (var ctx = new DataContext())
{
    var query = @"SELECT name from sqlite_master WHERE type='table';"
    string[] result = ctx.Database.ExecuteSqlCommand(query);
    return result;
}

我还有其他方法可以获取该信息。

2 个答案:

答案 0 :(得分:3)

您可以直接将ADO.NET命令与EntityFrameworkCore一起使用

using (var ctx = new DataContext())
{
    using (var command = ctx.Database.GetDbConnection().CreateCommand())
    {
        command.CommandText = "SELECT name from sqlite_master WHERE type='table'";
        ctx.Database.OpenConnection();
        using (var result = command.ExecuteReader())
        {
            while (result.Read())
            {
                Console.WriteLine(result.GetString(0));
            }
        }
    }
}

答案 1 :(得分:-2)

如果您需要一个具有数据库内部表列表的架构,则可以随时执行以下操作:

using (var ctx = new DataContext())
{
    DataTable dbSchemaWithTables = ctx.Database.GetDbConnection().GetSchema("Tables");
}
相关问题