web-dev-qa-db-ja.com

ビューとエンティティフレームワーク

エンティティモデルに含めるビューをデータベースに作成しました。ただし、VS 2008を通じてエンティティモデルを更新しようとすると、警告メッセージが表示され、TABLE OR VIEW追加しようとしているビューに主キーがないことが通知されます。

モデルにビューを追加するには、キーフィールドが必要です。ビューがキーフィールドを持つことを許可されていない場合、少なくとも私が使用しているDBMRSであるfirebirdで、このビューをモデルに追加するにはどうすればよいですか。

これを解決する方法のアイデアはありますか?

21
cepriego

これには素晴らしい答えがあります: Entity Framework and SQL Server View (承認された回答を参照: https://stackoverflow.com/a/2715299/5351 。)

EFは、null不可のフィールドをすべて組み合わせて、ビューのPKを推測します。 ISNULLおよびNULLIFを使用してビュー列のNULL可能性を操作することにより、EFに必要なPKを選択させることができます。

11
Greg Jackman

ファイヤーバードビューにはキーはありません。代わりに、次のコマンドを使用して、1つ(または複数)のフィールドを「not null」として設定します。

update RDB$RELATION_FIELDS set RDB$NULL_FLAG = 1 where (RDB$FIELD_NAME = 'A_FIELD') and (RDB$RELATION_NAME = 'A_VIEW')

次に、エンティティフレームワークにデータベースを再インポートします。

0