Определение первичного ключа таблицы - PullRequest
1 голос
/ 23 января 2012

Я пытаюсь сгенерировать несколько пользовательских объектов и пользовательский метод для получения данных из базы данных.

ListByPrimaryKey - имя столбца иногда равно «ID», «pid», «id» и т. Д.

Как определить, что столбец является первичным ключом, используя C #, используяШаблоны T4?

protected void GenerateListByMethods( Table table)
{
    WriteLine("#region ListBy\n");

    WriteLine("\n\tpublic List<"+Prefix+table.Name+"> ListAll()\n\t{\n\t  " +
        this.RepositoryNotification +
        "\n\t\t\t return Ctx.GetAll().ToList().ToCustomList<"+table.Name+","+Prefix+table.Name+">();\n\t}\n");
    foreach (Column  column in table.Columns)
    {
        switch(column.DataType.Name)
        {  // do something

Как написать метод расширения для column.DataType.IsPrimaryKey?

1 Ответ

2 голосов
/ 23 января 2012

Если вы используете SQL SERVER, попробуйте выполнить любой из запросов

SELECT  i.name AS IndexName,
        OBJECT_NAME(ic.OBJECT_ID) AS TableName,
        COL_NAME(ic.OBJECT_ID,ic.column_id) AS ColumnName
FROM    sys.indexes AS i INNER JOIN 
        sys.index_columns AS ic ON  i.OBJECT_ID = ic.OBJECT_ID
                                AND i.index_id = ic.index_id
WHERE   i.is_primary_key = 1

или

select * 
from sysobjects 
where xtype='pk' and 
   parent_obj in (select id from sysobjects where name='tablename')
...