Saving EF with F # and ASP.NET MVC

Based on large samples from Daniel Moth and his book .

I have an ASP.NET MVC application in F # with an online template for it. As long as I have my model, entities, controller, repository, view ... everything is very generalized and reusable, and the request is very large. But I can’t find a way to keep saving part of the DbContext equally reusable.

For the query part, the code for Repository.fs is as follows

namespace Melopienso.Repositories

open System
open System.Linq

module Repository =
    let get (source:IQueryable<_>) queryFn =
        queryFn source |> Seq.toList

    let getAll () =
        fun s -> query { for x in s do
                         select x }

    let find filterPredFn =
        filterPredFn
        |> fun fn s -> query { for x in s do
                               where (fn()) }

    let getTop rowCount =
        rowCount
        |> fun cnt s -> query { for x in s do
                                take cnt }

........... (More code) ...........

And in the controller I transfer everything I need:

namespace Melopienso.Controllers

open System
open System.Web.Mvc
open Melopienso.Models
open Melopienso.Repositories
open Repository
open Utils

[<HandleError>]
type CategoriesController(context:IDisposable, ?repository) =
    inherit Controller()

let fromRepository =
    match repository with
    | Some v -> v
    | _ -> (context :?> MelopiensoEntities).Categories
    |> Repository.get

new() = new CategoriesController(new MelopiensoEntities())

member this.Index () =
    getAll() |> fromRepository |> this.View

override x.Dispose disposing =
    context.Dispose()
    base.Dispose disposing

[<HttpGet>]
member this.Create () =
    this.View()

........... (More code) ...........

, . DbSet, , , DbSet (, ).

DbContext DbSet, -

use nameOfDbContext
    nameOfDbContext.NameOfDbSet.Add entity

, , .

, "" EF .., , , , Async, ..

. !

+5
1

DbContext, DbSet DbContext DbSet ( DbContext) .

DbSet DbContext, , :

myDbContext.Set<'a>()
+1

All Articles