ASP.NET MVC の Entity Framework で Oracle 既存DB 使いたい
ASP.NET MVC の Entity Framework で Oracle 既存DB 使いたい
って一度書きましたけど、自分としてもう少し良いやり方を見つけたのでそれをメモ。
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; }
一旦今日はここまで。