• 締切済み

asp.net MVC

asp.net MVC環境でもENTITY FRAMEWORK POCOについて質問です。 エンティティ・クラス(POCO)はデータベースのテーブルからしか定義(リンク)できない のでしょうか。 たとえばDBのビューをエンティティ・クラスとして定義はできないのでしょうか。 あるテーブルのあるフィールドをグループ化しSUMしたビューをエンティティ・クラスとして 定義したかったのです。 仮にできないとすると、LINQ to SQL などで加工(グループ化)するしかないのでしょうか。 もし、それしかできないとすると扱いずらさと、効率の悪さを感じます。 自分が分かっておらず方法があれば良いと思い、質問させていただきました。 ご教授よろしくお願いします。

みんなの回答

  • shockatz
  • ベストアンサー率80% (153/191)
回答No.2

#1です。 Entity Frameworkのバージョンが4.5以上で、MS-SQL Serverであれば、スキーマもDBも自動生成されます。 自分の経験では、4.3以下だとうまくいかなかったような。。すいません。ちょっと記憶にありません。

vespha
質問者

お礼

たびたびの回答ありがとうございます。 Verを最新の状態にして再度、確認いたしました。 結果うまくDBビューをリンクすることができました。 現状では4.1を利用していました。 バージョンのせいか、もしくは何度かDBやエンティティクラスを確認するために 変更したので、そのせいでうまくいかないのか原因ははっきりとはしませんが 最終的にうまくいきました。 アドバイスに感謝です。 すばやいレスポンスでの返答ありがとうございました。

  • shockatz
  • ベストアンサー率80% (153/191)
回答No.1

Entity Frameworkで「データベース・ファースト」なエンティティ設定を行う場合、インポートするデータベースの項目に、「テーブル」「ビュー」「ストアドプロシージャ」という項目は設定されています。 (ビューへの「書き戻し」は現状ではサポートされていないはずですが、取得系ならば問題なく使えます) また、「スキーマ・ファースト」で、DBとエンティティ定義を自動生成したり、「コード・ファースト」でスキーマとDBを生成する手法も一般的です。 「スキーマ・ファースト」や「コード・ファースト」な設計技法であれば、テーブルのm:nスキーマ定義なども簡単に定義できますし。 質問者さんはおそらく、ASP.NET MVCのビューごとにDBビューを生成して、DBへのリレーショナルナなアクセスをウィザードで統御したいとお考えだと思います。 個人的には、最近はLINQを代表とするO/Rマッパーが非常に柔軟になったり、「匿名クラス」の利用が一般的になったことで、中小規模のWebアプリケーションで、ビューはほとんど使用しなくなりました。 LINQやAutoMapperなどのマッッピングテクノロジーを習得されることを強くお勧めします。 Webアプリケーションが要求する、多種多様なビューモデルをDB側で吸収するのは至難の技であり、トリッキーなデータ構成を避け、メンテナンスのしやすい、正しく正規化されたDBを運用するためには、O/Rマッピングは避けて通れない技術だと思いますよ。

vespha
質問者

お礼

ありがとうございました。 大変、参考になりました。O/Rマッピングについて勉強したいと思います。 また、すみません。 再度、確認したいのですがコード・ファーストでも定義したエンティティクラスに DBビューをリンクできるのでしょうか。 投稿する前に試していたのですが、エラーとなり、うまくできませんでした。 環境 Visual Web Developer 2010 Express Sql Server2005 何度もすみません。ぜひ、アドバイスいただければと思います。

関連するQ&A