*

MVC5と魂力

公開日: : 最終更新日:2015/03/06 インターネット・パソコン, 日々.... , ,

このWebでは余りMVC5について書いていませんが、MVC5もよく使います。
元々Windows Formアプリを書く事が多いのですが、Web版をくれ~とリクエストが。

MVC5を始めた頃はMVC2とかMVC3をFreeBSD mono で遊んでいましたが、どうにもならない
ことが判明したのでWindows Serverで動くMVC4に移行しました。
ところがです、MySQL に Entity Framework(EF)を使おうとすると、EF6を使うことになります。
しかも、EF6を使うには MVC5が必須ということで、仕方無くMVC5になります。
今となっては、無駄な時間を使わずにMVC5にして良かったと思います。

初めてMVC5で書くときは、魂が吸い取られる思いがしました。当時は資料も書籍も殆どなくMSの本だけでした。

EFはコードファースト主体の解説が多いので、現実とのマッピングが理解を妨げました。特にモデルの書き方なんかが素人の私には厳しかった。

DBのテーブル名に対してテーブル名の複数形の名前でアクセスするあたりが、いやはや。今まであるテーブルはどうするのや?

モデルでは DbContext を使ってORマッピングしてDataAnnotationsを使って実テーブル
とマッピングすれば、現状のDBをそのまま使えます。


using System.Data.Entity;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace Net.Models
{
public class TargetContext : DbContext
{
public DbSet<Todo> ZTODOs { get; set; }

public DbSet<emp> emps { get; set; }

}

[Table("ZTODO")]
public class Todo
{
[Key]
[Display(Name = "番号")]
public int id { get; set; }
:
:
}
}

のようにマッピングでき、カラム名に日本語も使えます。通常MySQLでは日本語のカラム名は使いませんから、Dictionary 等で置き換えますが、MVC5ではDisplayで置き換えるだけで済みます。Display以外にも入力値のバリテーションとか

モデルができたら一度ビルドします。モデルの変更の都度ビルドが必要です。

後はコントローラーを書いて Scaffold すれば、 Viewまで一気に書けます。
もちろん上の例のように一つのモデルに複数のテーブルを書けます。

View は Scaffoldした時のコントローラーのメソッドにゲットするかプットします。
コントローラーでは、LINQを使ってオブジェクトを生成し、Listに渡して Viewに表示します。またViewで表示した結果をグラフにする場合も、Viewからメソッドを呼び出してListのまま Chart()に渡したりします。Chartヘルパーではなく、DataVisualization.ChartingにあるChart()を使います。なので、

using System.IO;
using System.Drawing;
using System.Web.UI.DataVisualization.Charting;

が必要です。

LINQ は赤間さんの LINQ テクノロジ入門が一番役にたちました。
当初は、SQLで書いた方が早いと思っていましたが、次第にLINQのみで考えるようになってしまいました。特に拡張メソッドはよく使います。

関連記事

ツールアップデート

マインドツールをアップデートしました OneNote が調子悪いので添付もできるToDOに変更

記事を読む

MySQL Connector/Net

Connector/Net のバージョンとVisual Studioのバージョンの組み合わせは困るな

記事を読む

no image

最近のFreeBSD

すっかりFreeBSDから遠ざかっていて、色々すっかり忘れてます。 そろそろ更新しないといけな

記事を読む

連休の最後は公園へ

連休最終日は家族と軽~くドライブ つばさ公園に飛行機のタッチダウンを観に行ってきた。すごくのん

記事を読む

Au TV

フレッツを、辞めるので必然的にスカパー光も解約となる。見る間もないのもあるから良いかと思ってた。

記事を読む

Au光二重ルータとDNS

Au光を使ってポート転送した時に内部ネットワークの名前を苦労しているんですね。 Au ホームゲ

記事を読む

真空調理5 ステーキ

買い出しに寄ったらアンガスのサーロインが食べてくれと並んでいた。嫁も飲み会だし焼いてみるか。 いつ

記事を読む

Au 光1Gプラン

いや〜、工事はあっさり終わりましたがその後が中々大変でした。工事の方も手際良くチャチャっと終わらして

記事を読む

アプリ更新

先日公開したToDO管理アプリを更新しました。 どちらかと言うとチケット管理のパーソナル版のイ

記事を読む

CNC3020 面取り中

[/video] 今週はコードを間違えて刃が折れてしまった 気を取り直して、面取り中です

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

// no image
プリンターの改造

知人のプリンターの精度が悪過ぎので改造しました。ロッドを替え、エクス

// no image
3Dプリンターまとめ

3Dプリンターを導入したので、そのときのまとめを書いてみました。 C

真空調理6 パスチャライズ

Anovaに限らず低温調理は55度~65度の間で調理することが前提にな

真空調理5 ステーキ

買い出しに寄ったらアンガスのサーロインが食べてくれと並んでいた。嫁も飲

真空調理 4

売り出ししていたオージービーフの大を加熱してみた。今回は55度8時間の

→もっと見る

PAGE TOP ↑