2012-04-20 4 views
3

私はEFとLinq.Expressionに基づいてリクエストジェネレータを構築しています。 EFのどこかで列情報を取得する方法があるかどうか疑問に思っていました。SQL Serverの列がEF経由でフルテキストでインデックス付けされているかどうかを知る方法はありますか?

SQl Serverのプロパティウィンドウに表示できる全文索引に関する情報を探しています。

誰かが助けることができますか?

select sc.name, columnproperty(OBJECT_ID('PitMingTable'),sc.name,'IsFulltextIndexed') 
from sysobjects so 
inner join syscolumns sc on so.id = sc.id 
where so.name like 'PitMingTable' and so.xtype ='u' 

Thxを:

は情報については、こちらをテーブルPitMingTableため、この情報を取得するT-SQL要求です。

+0

ちなみに、EFではネイティブにFTクエリも実行できません。 –

答えて

1

いいえEFにはデータベースメタデータのクエリがネイティブサポートされていませんが、SQLを使用してEF(ExecuteStoreQuery)で実行できます。

2

これは、Entity Frameworkの範囲外で、コンパイル時にエンティティデータモデルが生成されるのを見ると思います。 DBAはデータベースを修正して列を索引付けすることができ、データ・モデルはこれを反映するために更新する方法がありません。さらに、Entity Frameworkはデータベースに依存しないように設計されており、さまざまなデータベースプラットフォーム間でこの種のメタデータを一貫して公開することはできません。

SQLのビットで手を汚しても構わない場合は、この種のものを見つけるためにストアドプロシージャを書くことができます。この回答:List of all index & index columns in SQL Server DBは、あなたがSQL Serverを使用していると仮定した場合には、頭を悩ませるべきです。

0

コンテキストを使用してクエリを実行できます。フルテキストインデックスのリストを取得するには、これを使用します。

ここ
SELECT * FROM sys.fulltext_indexes 

ある説明:sys.fulltext_indexes

あなたはSQLクエリを使用しない場合、私はあなたのモデルにビューsys.fulltext_indexesを追加して働くことができると思いますそれはEFを使用しています。

関連する問題