エンティティモデルに含めるビューをデータベースに作成しました。ただし、VS 2008を通じてエンティティモデルを更新しようとすると、警告メッセージが表示され、TABLE OR VIEW追加しようとしているビューに主キーがないことが通知されます。
モデルにビューを追加するには、キーフィールドが必要です。ビューがキーフィールドを持つことを許可されていない場合、少なくとも私が使用しているDBMRSであるfirebirdで、このビューをモデルに追加するにはどうすればよいですか。
これを解決する方法のアイデアはありますか?
これには素晴らしい答えがあります: Entity Framework and SQL Server View (承認された回答を参照: https://stackoverflow.com/a/2715299/5351 。)
EFは、null不可のフィールドをすべて組み合わせて、ビューのPKを推測します。 ISNULLおよびNULLIFを使用してビュー列のNULL可能性を操作することにより、EFに必要なPKを選択させることができます。
ファイヤーバードビューにはキーはありません。代わりに、次のコマンドを使用して、1つ(または複数)のフィールドを「not null」として設定します。
update RDB$RELATION_FIELDS set RDB$NULL_FLAG = 1 where (RDB$FIELD_NAME = 'A_FIELD') and (RDB$RELATION_NAME = 'A_VIEW')
次に、エンティティフレームワークにデータベースを再インポートします。