Как я могу узнать в C #, является ли столбец таблицы в SQL Server автономным? - PullRequest
0 голосов
/ 21 сентября 2011

Мне нужно знать в C #, является ли столбец таблицы в SQL Server 2005 автономным.Я знаю, что если я сделаю запрос для получения DataTable и прохожу столбцы, я мог бы использовать что-то вроде

if (table.Columns[i].AutoIncrement) bla bla

Проблема в том, что AutoIncrement всегда ложно, даже когда столбец является Identity истолбец автоинкремента, и я не знаю, как это выяснить, кроме этого.

Я хотел бы знать то же самое для базы данных Access, хотя.

Большое спасибо!!

Ответы [ 2 ]

1 голос
/ 21 сентября 2011

вам нужно вызвать метод GetSchema, чтобы получить также схему / метаданные БД, а не только данные из базы данных, посмотрите здесь:

Коллекции GetSchema и Schema (ADO.NET)

0 голосов
/ 21 сентября 2011

Вы можете достичь этого для SQL Server 2005, используя пространство имен Microsoft.SqlServer.Management.Smo - Нажмите здесь для получения дополнительной информации

string conn = string.Format(@"Data Source={0};Initial Catalog={1};User ID={2};Password={3}",
            "DATASOURCENAME", "DB", "USERNAME", "PASSWORD");

 Microsoft.SqlServer.Management.Smo.Server s = new Microsoft.SqlServer.Management.Smo.Server(
                    new Microsoft.SqlServer.Management.Common.ServerConnection(
                        new System.Data.SqlClient.SqlConnection(
                    conn)));

 Microsoft.SqlServer.Management.Smo.Database db =
                    s.Databases["YOUR_DATA_BASE_NAME"];
                Microsoft.SqlServer.Management.Smo.Table tbl =
                    db.Tables[0];//Or you can get the table by table name

 List<Microsoft.SqlServer.Management.Smo.Column> autoIncrementClmns = 
                    new List<Microsoft.SqlServer.Management.Smo.Column>();

 foreach (Microsoft.SqlServer.Management.Smo.Column clmn in tbl.Columns)
  {
     if (clmn.IdentityIncrement > 0)//Check if this column is AutoIncrement
         autoIncrementClmns.Add(clmn);
  }

Необходимые сборки для SMO:

  • Microsoft.SqlServer.ConnectionInfo
  • Microsoft.SqlServer.Management.Sdk.Sfc
  • Microsoft.SqlServer.Smo

Найдено на YOUR_SYSTEM_DRIVE_NAME:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...