ASP.NET MVC の Entity Framework で Oracle 既存DB 使いたい

ASP.NET MVC の Entity Framework で Oracle 既存DB 使いたい

って一度書きましたけど、自分としてもう少し良いやり方を見つけたのでそれをメモ。

Modelsで右クリックして、新しい項目を追加します。

ADO.NET Entity Data Modelを選択して、名前を適当に付けます。

で、ここがポイント!「データベースからCode First」を選びます。

で、必要なテーブルやビューを選択します。

すると、Modelsの下にこんな感じで、DBContextクラスや、テーブル(やビュー)に1対1で紐付いたモデルクラスが出来上がります。

ここからがCode Firstチックです。既存DBの情報を自動で読み取りはするも、十分ではないので自分でアノテーション付けていきます。
(ビューなんかはまるでダメですし)
例えば、PKには[Key]を付けます。複合PKの場合は、一つ目の列には[Key][Column(Order = 0)]、二つ目の列には[Key][Column(Order = 1)]、とします。
また、入力チェックしたければ、[Required(ErrorMessage = "{0}は必須です")]とか[StringLength(20, ErrorMessage ="{0} は {1} 文字以内で入力して下さい。")]とかします。
DBの列名とモデルのプロパティ名は、自動読み取りだと同じになりますが、一致していなくても大丈夫です。[Column("DBの列名")]をつければ良いです。テーブル名もですよ。
一例を示しますが、このようにすれば、既存DB読み取って作ったモデルだけど、色々できそうですよね。

[Key]
[Column("社員番号", Order = 0)]
[DisplayName("社員番号")]
[StringLength(8)]
[Required]
public string 社員番号 { get; set; }

[Column("P_NO")]
[DisplayName("プロジェクトコード")]
[Required(ErrorMessage = "{0}は必須です。")]
[StringLength(20, ErrorMessage ="{0} は {1} 文字以内で入力して下さい。")]
[RegularExpression("[a-zA-Z0-9-]+", ErrorMessage = "{0} は半角英数字(ハイフン含む)で入力して下さい。")]
public string P_NO { get; set; }

一旦今日はここまで。