2016-05-24 12 views
1

誰かがASP.NET Core 1 RC2でスキーマを取得する方法をアドバイスできますか?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 

     } 

答えて

2

connection.GetSchemaが、それはまた、減価償却されたDataTableを返すよう伴うAsp.Netコアで償却されています。これを行う方法は、ExecuteReader()関数を開いて、結果のリーダーオブジェクトから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とでstabalizedことだと思います。たとえば、column.IsKey関数は常にnullを返します。

+0

.netコアでの手作り1.1。私はまだReader.GetSchemaTable()を見ることができ、Reader.GetColumnSchema()は見ることができません。物語は何ですか? – bbsimonbb

+0

こんにちは。私はちょうど.netcoreapp 1.1を対象とし、System.Data.SqlClient 4.3を追加し、コードを貼り付けた新しいコンソールアプリケーションを作成しました。だから私はGetSchemaTable()を見ることができないのは不明です。 –

+0

私はそれを見ることができますが、GetSchemaTable()はプロパティやメソッドを持たない[DataTable](https://docs.microsoft.com/en-us/dotnet/core/api/system.data.datatable)を返しますか? – bbsimonbb

0

あなたは、私がこれを行うには、管理データベースからすべてのテーブル名が必要な場合:

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; 
} 
関連する問題