2016-05-24 92 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已Asp.Net核心折舊完畢,由於它返回它也已經貶值了DataTable 。現在執行此操作的方法是打開運行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; 
} 
相關問題