質問: 現在Entity Framerowkを用いて製造を行っています。言語はASP.NET C#です。 Edmxファイルを作成後に、Edmxファイルを開き、右クリックをし、"データベースからモデルを更新"を選択し、データベースに存在する作成済みのテーブルとビューを選択して、データへのアクセスクラスを自動生成していました。 本日、新規にビューを作成したので、新規に作成したビューのアクセスクラスを作成しようとしたのですが、今までの手順をとってもデータアクセスクラスは自動生成されませんでした。 エラーが発生しないので、原因が全く分からない状態で先に進まない状態となっています。 Entity Framerowkを使い始めて3日の初心者なため、説明が不足している箇所もあるかと思いますが、 よろしくお願い致します。 【開発環境】 ・Visual Stduio 2015 ・ASP.NET C# ・Entity Framework 6.1.3 【追記】 以下の警告が出ていたことを気づいていませんでした。ビューなので主キーを定義しようがないと思うのですが、回避手段が何かあるのでしょうか? --- テーブル/ビュー "作成したビューの名称"に主キーが定義されておらず、有効な主キーを推論できませんでした。このテーブル/ビューは除外されました。エンティティを使用するには、スキーマを確認し、正しいキーを追加して、コメントを解除する必要があります。 ---------------------------------------------------------------------------------------------------------------------------
回答: まだ回答が付いてなかったので。 当方、Entity Framework扱ったことがないですが、 こちらのページが参考になるかと思われるます。 モデルクラス生成時の挙動として、 主キーがない場合はVS側でキーの推論が行われるそうで、 主キーがない場合でも**一意となりかつ非NULL項目**があればそれをキーとしてモデル生成を実行するようです。 そのためビュー自体には主キーが張れなくとも、 そのビューの定義にビュー生成元のテーブルの主キーを含んでいる場合は問題なくモデルが作成できます。 またビューの定義上、 一意かつ非NULLの項目がない場合は、 擬似的に上記役割を担う項目列を追加してあげるとこちらも問題なく生成できるようです。 その疑似的に列を追加するアプローチが、リンク先ページの2番目の解決策となります。