ASP.NET 核心 1 RC2 - 数据库架构

ASP.NET Core 1 RC2 - database schema

有人可以建议如何在 ASP.NET Core 1 RC2 中获取架构吗?

using (SqlConnection connection = new SqlConnection("Server=.;Database=Mydb;Trusted_Connection=True;MultipleActiveResultSets=true"))
        {
            connection.Open();
            connection.GetSchema("Tables"); // doesn't work

        }

如果您需要数据库中的所有 table 个名字,我可以这样做:

public List<string> getTables()
{
    List<string> result = new List<string>();
    using (SqlConnection connection = new SqlConnection(appSettings.ConnectionStringSamples))
    {
        connection.Open();
        using (SqlCommand command = new SqlCommand("SELECT name FROM sys.Tables;", connection))
        using (SqlDataReader reader = command.ExecuteReader())
        while (reader.Read()) result.Add(reader["name"].ToString());
    }

    return result;
}

connection.GetSchema 已在 Asp.Net 核心中折旧,因为它 returns DataTable 也已折旧。现在的方法是打开 运行 ExecuteReader() 函数,然后使用生成的 reader 对象中的 GetSchemaColumn() 函数。

这是一个示例:

    public static void Main(string[] args)
    {
            using (SqlConnection connection = new SqlConnection("Server=(localdb)\v11.0;Database=MyAdventureWorks;Trusted_Connection=True"))
            {

                connection.Open();

                SqlCommand cmd = new SqlCommand("select * from [Person].[Person]", connection);
                DbDataReader reader = cmd.ExecuteReader(System.Data.CommandBehavior.SchemaOnly);

                if (reader.CanGetColumnSchema())
                {
                    var columns = reader.GetColumnSchema();
                    foreach (var column in columns)
                    {
                        Console.Write("ColumName: " + column.ColumnName);
                        Console.Write(", DataTypeName: " + column.DataTypeName);
                        Console.Write(", ColumnSize: " + column.ColumnSize);
                        Console.WriteLine(", IsUnique: " + column.IsUnique);
                    }
                }
                else
                    throw new Exception("Connection does not support GetColumnSchema.");
            }

            Console.ReadLine();
    }

注意:我认为这在 Rc2 中仍处于稳定状态。例如 column.IsKey 函数总是返回 null。