使用F#查询实体框架的示例

时间:2009-01-27 15:41:30

标签: .net entity-framework f#

我正在全世界范围内查找有关使用F#查询实体数据源的示例或教程。

老实说,我找不到多少。你们有没有运气好吗?

2 个答案:

答案 0 :(得分:5)

以下是我在blog

上找到的一个例子
open Microsoft.FSharp.Linq.QuotationEvaluation
open Microsoft.FSharp.Linq

let IsPermited (serviceName:string) =
  //Instantiate the Entity 
  let data = new BusModelContainer()

  //Build your query
  let services = Query.query <@ seq{ for service in data.ServiceSet do
                         service.Name.Equals(serviceName) && service.IsEnabled then
                               yield service } @>
  if Seq.is_empty services then 
    false
  else
    true

以下是博客中的代码,向我展示了如何从实体中进行选择

  let db = new FSharpSampleDB(connString)  

  Query.query <@ seq { for c in db.Customers do  
                       if id = c.CustomerId then  
                          yield (new Customer(c.CustomerId, c.Name, c.Balance))}   
              |> Seq.hd @> :> ICustomer  

答案 1 :(得分:0)

here

中的大量示例

返回记录类型

type T1 = {F1: int32; F2: string}
let q = query {
  for t in ctx.SomeTable do 
  select { F1 = t.F1
           F2 = t.F2 } 
};

返回匿名类型,{| ... |},仍然存在一些错误,丑陋的解决方法是将.ToList()添加到表中。

let q = query {
  for t in ctx.SomeTable.ToList() do 
  select 
        {| F1 = t.F1
           F2 = t.F2 
        |} 
};

在EF Core中更新记录

let obj = ctx.SomeTable.Where(fun t->t.ID = 123).Single()
obj.FieldX <- "new Value"
ctx.SaveChanges() |> ignore