我正在全世界范围内查找有关使用F#查询实体数据源的示例或教程。
老实说,我找不到多少。你们有没有运气好吗?
答案 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)
返回记录类型
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