電子書籍の厳選無料作品が豊富!

asp.net MVC環境でもENTITY FRAMEWORK POCOについて質問です。
エンティティ・クラス(POCO)はデータベースのテーブルからしか定義(リンク)できない
のでしょうか。

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

A 回答 (2件)

#1です。



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

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

お礼日時:2013/11/06 22:41

Entity Frameworkで「データベース・ファースト」なエンティティ設定を行う場合、インポートするデータベースの項目に、「テーブル」「ビュー」「ストアドプロシージャ」という項目は設定されています。


(ビューへの「書き戻し」は現状ではサポートされていないはずですが、取得系ならば問題なく使えます)
また、「スキーマ・ファースト」で、DBとエンティティ定義を自動生成したり、「コード・ファースト」でスキーマとDBを生成する手法も一般的です。
「スキーマ・ファースト」や「コード・ファースト」な設計技法であれば、テーブルのm:nスキーマ定義なども簡単に定義できますし。

質問者さんはおそらく、ASP.NET MVCのビューごとにDBビューを生成して、DBへのリレーショナルナなアクセスをウィザードで統御したいとお考えだと思います。

個人的には、最近はLINQを代表とするO/Rマッパーが非常に柔軟になったり、「匿名クラス」の利用が一般的になったことで、中小規模のWebアプリケーションで、ビューはほとんど使用しなくなりました。
LINQやAutoMapperなどのマッッピングテクノロジーを習得されることを強くお勧めします。

Webアプリケーションが要求する、多種多様なビューモデルをDB側で吸収するのは至難の技であり、トリッキーなデータ構成を避け、メンテナンスのしやすい、正しく正規化されたDBを運用するためには、O/Rマッピングは避けて通れない技術だと思いますよ。
    • good
    • 0
この回答へのお礼

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

何度もすみません。ぜひ、アドバイスいただければと思います。

お礼日時:2013/11/06 14:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!