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。
有人可以建议如何在 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。