2012-01-23 13 views
1

データベースからデータを取得するカスタムエンティティとカスタムメソッドを生成しようとしています。テーブルの主キーの検出

ListByPrimaryKey - 列名が、時にはあなたは、列がT4テンプレートを使用して、C#を使用して、主キーであることを検出できるかなど、 "ID"、 "PID"、 "ID"、

のですか?

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の拡張メソッドはどのように記述できますか?

+0

のいずれかを実行するために、SQL Serverの試みを使用している場合は? [NHibernateの] [this](http://stackoverflow.com/a/8801227/601179)の回答 – gdoron

+1

データベースクエリの実行について考えましたか? – MethodMan

答えて

2

あなたは `ORM`を使用しているquerys

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')