![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
asp.net MVC環境でもENTITY FRAMEWORK POCOについて質問です。
エンティティ・クラス(POCO)はデータベースのテーブルからしか定義(リンク)できない
のでしょうか。
たとえばDBのビューをエンティティ・クラスとして定義はできないのでしょうか。
あるテーブルのあるフィールドをグループ化しSUMしたビューをエンティティ・クラスとして
定義したかったのです。
仮にできないとすると、LINQ to SQL などで加工(グループ化)するしかないのでしょうか。
もし、それしかできないとすると扱いずらさと、効率の悪さを感じます。
自分が分かっておらず方法があれば良いと思い、質問させていただきました。
ご教授よろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
#1です。
Entity Frameworkのバージョンが4.5以上で、MS-SQL Serverであれば、スキーマもDBも自動生成されます。
自分の経験では、4.3以下だとうまくいかなかったような。。すいません。ちょっと記憶にありません。
たびたびの回答ありがとうございます。
Verを最新の状態にして再度、確認いたしました。
結果うまくDBビューをリンクすることができました。
現状では4.1を利用していました。
バージョンのせいか、もしくは何度かDBやエンティティクラスを確認するために
変更したので、そのせいでうまくいかないのか原因ははっきりとはしませんが
最終的にうまくいきました。
アドバイスに感謝です。
すばやいレスポンスでの返答ありがとうございました。
No.1
- 回答日時:
Entity Frameworkで「データベース・ファースト」なエンティティ設定を行う場合、インポートするデータベースの項目に、「テーブル」「ビュー」「ストアドプロシージャ」という項目は設定されています。
(ビューへの「書き戻し」は現状ではサポートされていないはずですが、取得系ならば問題なく使えます)
また、「スキーマ・ファースト」で、DBとエンティティ定義を自動生成したり、「コード・ファースト」でスキーマとDBを生成する手法も一般的です。
「スキーマ・ファースト」や「コード・ファースト」な設計技法であれば、テーブルのm:nスキーマ定義なども簡単に定義できますし。
質問者さんはおそらく、ASP.NET MVCのビューごとにDBビューを生成して、DBへのリレーショナルナなアクセスをウィザードで統御したいとお考えだと思います。
個人的には、最近はLINQを代表とするO/Rマッパーが非常に柔軟になったり、「匿名クラス」の利用が一般的になったことで、中小規模のWebアプリケーションで、ビューはほとんど使用しなくなりました。
LINQやAutoMapperなどのマッッピングテクノロジーを習得されることを強くお勧めします。
Webアプリケーションが要求する、多種多様なビューモデルをDB側で吸収するのは至難の技であり、トリッキーなデータ構成を避け、メンテナンスのしやすい、正しく正規化されたDBを運用するためには、O/Rマッピングは避けて通れない技術だと思いますよ。
ありがとうございました。
大変、参考になりました。O/Rマッピングについて勉強したいと思います。
また、すみません。 再度、確認したいのですがコード・ファーストでも定義したエンティティクラスに
DBビューをリンクできるのでしょうか。
投稿する前に試していたのですが、エラーとなり、うまくできませんでした。
環境
Visual Web Developer 2010 Express
Sql Server2005
何度もすみません。ぜひ、アドバイスいただければと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- 化学 『化学とは』 5 2022/11/01 06:45
- 飲み会・パーティー ホテルで開催される同窓会 3 2023/08/10 14:03
- MySQL 【MySQL】本当に困っているので、助けてください。よろしくお願いします。 3 2023/06/03 14:24
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- MySQL [1000地域 × 10カテゴリー = 1万件のテーブル]!グループ化? 1 2023/06/14 23:56
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- いじめ・人間関係 高校2年生男子です。 最近、今まで別グループにいた奴(以後Aとします)が僕のグループに入ってきていま 1 2022/07/10 18:06
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DBの読み込み順について
-
select文の戻り値を変数に格納...
-
外部キーのリレーションが設定...
-
テキストボックスのvalueとtext...
-
【C++/CLI.NET】コンボボックス...
-
表にフィルターをかけ、絞った...
-
i=cells(Rows.Count, 1)とi=cel...
-
EXCELで変数をペーストしたい
-
C言語について。
-
【VBA】指定したセルと同じ値で...
-
TODAY()で設定したセルの日付...
-
Excelで指定した日付から過去の...
-
count(*)で取得した値をJAVAの...
-
ExcelVBAを使って、値...
-
Excelのプルダウンで2列分の情...
-
EXCEL VBA 2次元配列に格納さ...
-
Excel VBAで、 ヘッダーへのセ...
-
Excle VBA Findメソッドについて
-
配列がとびとびである場合の書き方
-
VBA初心者です。 VBAで行単位で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL文(テーブル項目名が特殊文...
-
select文の戻り値を変数に格納...
-
【ACCESS】リレーションを組ん...
-
Windows formアプリで データグ...
-
access コンボボックス初期表示...
-
ACCESSテーブルを RecordSet以...
-
DBの読み込み順について
-
外部キーのリレーションが設定...
-
VBとACCESSを接続したい
-
ASP.NET:複数結合テーブルのデ...
-
accessのフォームを使ってテー...
-
アクセスのデータを編集しなが...
-
Delphi BDE 複数ユーザによる...
-
テーブルというグローバル変数
-
ACCESSで伝票をつくる方法
-
フラッシュの画像を合わせるパ...
-
異なるデータベースでのSELECT ...
-
ASPとAccessとの接続について
-
Accessで自作顧客管理ソフト
-
DataGridViewで編集した内容を...
おすすめ情報