1

SQLサーバー上にActiveDirectoryにリンクするリンクサーバーがあります。ADからユーザーに関する関連情報を選択するビューを作成しました。このビューには主キーがありません。次に、ブラウザーとアプリケーションからビューを照会するODataサービスを構築します。そのために.NETWCFデータサービス(.NET 4.0、VS2010)を使用しています。ただし、edmxファイルを作成してビューをインポートしようとすると、PRIMARY KEYがないため、ビューはインポートされません。ビューに主キーを作成できません(MS SQL Serverでは作成できません)が、エンティティデータモデルデザイナでビューをインポートできるようにするために必要です。私に何ができる?どうすればそれを機能させることができますか?

ビューがスキーマにバインドされていないため(データはActive Directoryから取得されているため)、インデックス付きビューを作成できないことを付け加えておきます。

4

1 に答える 1

1

あなたが1、2時間物事を解決しようとする方法は本当に面白いです、あなたはSOに投稿して数分以内にあなたの問題を解決することに決めます...

私はこれを見つけました:https ://stackoverflow.com/a/2715299/989256

同じ問題があり、これが解決策です。エンティティフレームワークで列を主キーとして使用するように強制するには、ISNULLを使用します。エンティティフレームワークが列を主キーとして使用しないように強制するには、NULLIFを使用します。これを適用する簡単な方法は、ビューのselectステートメントを別のselectでラップすることです。例:

SELECT
  ISNULL(MyPrimaryID,-999) MyPrimaryID,
  NULLIF(AnotherProperty,'') AnotherProperty
  FROM ( ... ) AS temp

うまくいきましたが、パフォーマンスが少し気になります。ビューの読み込みがはるかに遅いようです...

于 2012-12-12T15:23:35.703 に答える