3

EFとLinq.Expressionに基づいてリクエストジェネレーターを構築しています。EFのどこかで列情報を取得する方法があるかどうか疑問に思いました。

SQlServerのプロパティウィンドウに表示される全文インデックスに関する情報を探しています。

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

詳細については、テーブルPitMingTableのこの情報を取得するT-SQLリクエストを次に示します。

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'

どうも。

4

3 に答える 3

2

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

少しのSQLで手を汚してもかまわない場合は、いつでもストアドプロシージャを記述して、この種のことを見つけることができます。この回答: SQL Serverを使用していると仮定すると、SQLServerDBのすべてのインデックスとインデックス列のリストからすぐに始めることができます。

于 2012-04-20T10:53:32.510 に答える
1

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

于 2012-04-20T10:47:33.017 に答える
0

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

SELECT * FROM sys.fulltext_indexes

説明は次のとおりです:sys.fulltext_indexes

SQLクエリを使用したくない場合はsys.fulltext_indexes、モデルにビューを追加し、EFを使用して操作できると思います。

于 2012-04-20T13:31:18.270 に答える