トップ回答者
コードファースト

質問
回答
-
> Model1.Context.ttの下に社員テーブルらしいものがありませんでした。
えと、これだとちゃんとt4テンプレートが実行されてないですね。
この下にDbContextを継承したクラスのソースが、そしてModel1.ttの下にPOCOクラスが生成されないといけないです。もしかして、「社員」モデルを選択した状態にしないで、単にデータモデルエディタで右クリックしてテンプレートの実行を開始してませんか?
その場合だとクラスが生成されなかったよーな。あと、コントローラーの追加ですが、データコンテキストクラスの指定が間違っていると思います。
MVCData.edmxのソースを確認して、ObjectContextを継承したクラスがどんな名前になっているか確認してください。
ウィザードでこのモデルを作るときに指定した名前のはずなんですが。
それをデータコンテキストクラスとして指定してください。
これを指定すればソースファーストのコードは必要ないです。
ObjectContextベースでコントローラー等を生成してくれます。
あおい情報システム株式会社 小野修司(どっとねっとふぁん)- 回答としてマーク 絶対初心者 2011年11月24日 6:13
すべての返信
-
ASP.NET MVC3とコードファーストを連携させる話じゃないかな。
データベースファーストでエンティティデータモデルを構築して利用するのが一般的かと。
で、エンティティデータモデルからコードファースト形式のPOCOのクラスやDbContextを利用したソースコードを生成させることができます。http://blogs.msdn.com/b/adonet/archive/2011/11/01/ef-4-2-released.aspx
この記事の最後のほうに書いてありますが。
まずエンティティデータモデルを作って、そこでコードを生成したいクラスをすべて選択します。
で、右クリックして表示されるコンテキストメニューから「コード生成項目の追加」を選択して、表示される新しい項目の追加ウィンドウのなかで「オンラインテンプレート」を選んでADO.NET C# DbContext Generatorを選択するとPOCOのエンティティクラスとDbContextを継承したクラスとかが生成されます。あ、これ利用する場合は当然ですがEF4.2も追加しておく必要があります。
MVC3との連携であれば、こうやって生成したクラスからスキャッフォールディングを利用できます。
まあ、エンティティデータモデル(ObjectContext)からスキャッフォールディングを利用することもできるんですが。http://blogonos.wordpress.com/category/mvcconf-japan/
このあたりで一度まとめてます。
EF4.2がでてますが、プロジェクトへの導入の仕方が変わってるぐらいで使い方は変わらないかと。
あおい情報システム株式会社 小野修司(どっとねっとふぁん) -
ありがとうございます。
「ADO.NET C# DbContext Generator」はVBの場合「ADO.NET VB.NET DbContext Generator」でしょうか。
オンラインテンプレートの実行時に「リモートサーバーがエラーを返しました。(403) 使用不可能」の
エラーになってしまいます。
また、Controllersの追加で「Entity Framekを使用した・・・」を選んでデータクラス、データコンテキストクラスを
作りたいテーブルにして実行すると「サポートされていないコンテキスト型です。」とエラーになります。
エラーの原因が分かるようでしたらご教示ください。
-
ありがとうございます。
ADO.NET VB.NET DbContext Generatorがうまく動かなかったのでしょうか。
Model1.Context.ttの下に社員テーブルらしいものがありませんでした。
データコンテキストクラスの指定は下記のようにやりました。
手でテーブル定義をコンテキスト・クラスにしても「Entity Frameworkを利用した・・・」を使用できるのでしょうか。
頑張ってEntity Frameworkを使ってみようと思いましたが、
「Entity Frameworkを利用した・・・」は複数のテーブルの値を表示したり
登録が複数のテーブルにまたがる場合には向いていないから「空の読み取り、書込み・・・」でも良い気がしてきました。
-
> Model1.Context.ttの下に社員テーブルらしいものがありませんでした。
えと、これだとちゃんとt4テンプレートが実行されてないですね。
この下にDbContextを継承したクラスのソースが、そしてModel1.ttの下にPOCOクラスが生成されないといけないです。もしかして、「社員」モデルを選択した状態にしないで、単にデータモデルエディタで右クリックしてテンプレートの実行を開始してませんか?
その場合だとクラスが生成されなかったよーな。あと、コントローラーの追加ですが、データコンテキストクラスの指定が間違っていると思います。
MVCData.edmxのソースを確認して、ObjectContextを継承したクラスがどんな名前になっているか確認してください。
ウィザードでこのモデルを作るときに指定した名前のはずなんですが。
それをデータコンテキストクラスとして指定してください。
これを指定すればソースファーストのコードは必要ないです。
ObjectContextベースでコントローラー等を生成してくれます。
あおい情報システム株式会社 小野修司(どっとねっとふぁん)- 回答としてマーク 絶対初心者 2011年11月24日 6:13