お世話になります。
DbContextを継承したコンテキストクラスが保持するプロパティについて、コンテキストクラスはどのような集合(Entityの集まり)とするべきでしょうか。
例えば、
・データベースそのものとし、使用するテーブル(Entity)をすべて定義する
・任意のまとまりとする(ex 画面(MVCではコントローラ)で使用するテーブルをプロパティに定義する 等)
・Entityと1対1(これはないでしょうが)
等々、ガイドライン的なものも見つけれなかったため、ご教授、もしくはご意見いただけますでしょうか。
よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
他の方の回答とダブるとことがありますが・・・
DB First でも Code First でも、好むと好まざるとにかかわらず、
・データベースそのものとし、使用するテーブル(Entity)をすべて定義する
ということにせざるを得ないと思います。
例えば、Microsoft が提供しているサンプルデータベース AdventureWorksLT から DB First で EDM を作る場合、
Visual Studio でプロジェクトに EDM を作成するには、項目の追加で ADO.NET Entity Data Model を使います。
ウィザードに従って .edmx ファイルを完成させると以下のようになります。
コンテキストクラスは以下のようになります。
投稿2018/10/25 07:36

退会済みユーザー
総合スコア0
0
Entity Framework 6.xの話です。
Entity Frameworkを使った構築の方法はモデルファースト、コードファースト、DBファーストとあります。
どれでも良いのですが、Entity FrameworkはDBの機能や.Netの機能の一部しか使えません。
ですから、Entity Frameworkを気分よく使おうとおもったらEntity Frameworkを使うことを前提としたモデリングが必要になってきます。
言ってみればEntity Framework-Firstですね。
そこで、ガイドライン的なものがあるのではと思うのもわからなくはないです。
しかし、モデリングに制約こそ多いですが、Entity Frameworkは単なる道具ですからDBの利用-構築まで言及することはあり得ません。
Entity FrameworkではDbContextに対してDbConnectionは一つだけで、DbSetは複数持てる
それだけです。
一つのデータベースに対して複数のDbContextがあってもかまいません。
個別のマイグレーションも可能です。
投稿2018/10/25 05:45
総合スコア4152
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
ベストアンサー
こんにちは。
ほぼEntityFrameworkCore専門なので、その観点での回答ですが。
DBからscaffoldしてみればわかりますが、1つのDbContextがDBそのものとなるのがまずは基本となります。これはアプリとDBが一対一となるような標準的なシステムの場合です。
もし、システム外のツールやコンソールアプリケーションを作る際に既存DBの一部を利用したいだけの用途であれば、必要最低限のカラムを持たせたテーブルマッピングクラスのみを手で書いてしまえば良いです。読むだけなら本当にデータが必要なカラムだけあればよく、書く場合はデータを入れなければならないカラムをもれなく定義します。
EFをマイグレーションに利用する予定があるなら、当然ですが1つのDbContextにDBの全情報を抜けなく定義しておく必要があります。
複数のプロジェクトにまたがって一つのDBを利用するなら、DBを完全マッピングしたDbContextとそのテーブルを表すクラスのみを持つアセンブリを作成しておき、それを使い回すというのも良いと思います。
とにかく、「1つのシステムが2種類以上のDbContextを利用することは決してない」ということを念頭に置いて考えてみると良いでしょう。
投稿2018/10/25 05:31
総合スコア4297
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/26 00:41
退会済みユーザー
2018/10/26 00:49
2018/10/26 01:06