【F# + ASP.NET MVC】 Entity Frameworkでデータ更新するには

◆Entity

namespace MsdnWeb.Entities

open System.Data.Entity

type Employee() =
    let mutable id = 0
    let mutable name = ""
    member x.ID
        with get() = id
        and set v = id <- v
    member x.Name
        with get() = name
        and set v = name <- v

type EduContext() =
    inherit DbContext()
    [<DefaultValue>]
    val mutable employee : IDbSet<Employee>
    member public x.Employees
        with get() = x.employee
        and set v = x.employee <- v

◆Model

namespace MsdnWeb.Models

open System
open MsdnWeb.Entities

type HomeModel() =
    member this.Create(entity:Employee) : unit =
        // データの更新
        use ctx = new EduContext()
        ctx.Employees.Add(entity) |> ignore
        ctx.SaveChanges() |> ignore

◆Controller

namespace MsdnWeb.Controllers

open System.Web
open System.Web.Mvc

open MsdnWeb.Models
open MsdnWeb.Entities

type HomeController() =
    inherit Controller()
    member this.Index() =
        this.View() :> ActionResult

    // 入力フォームを生成
    member this.Create() =
        this.View() :> ActionResult

    // [Create]ボタン Clickアクション
    [<HttpPost>]
    member this.Create(entity:Employee) =
        // データの更新
        let model = new HomeModel()
        model.Create(entity) |> ignore
        this.View(entity) :> ActionResult

◆View

@model MsdnWeb.Entities.Employee

@{ Layout = null; }

<!DOCTYPE html>
<html>
<head>
    <title>F# + Entity Framework</title>
</head>
<body>
    <div>
        @using (Html.BeginForm()) { 
            <fieldset>
                <legend>User</legend>
                <div class="editor-label">
                    @Html.LabelFor(model => model.Name)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.Name)
                </div>
                <p>
                    <input type="submit" value="Create" />
                </p>
            </fieldset>
        }
    </div>
</body>
</html>

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中